2015-10-17 24 views
10

के बाद लटकता है मैं किसी भी प्रकार के "उचित" वातावरण में नोड और विकास के लिए नया हूं। मैंने मोचा और कुछ अन्य मॉड्यूल के साथ, मेरे वर्तमान प्रोजेक्ट के लिए गल्प स्थापित किया है।गुलप "फिनिशिंग"

var gulp = require('gulp'); 
var mocha = require('gulp-mocha'); 
var eslint = require('gulp-eslint'); 

gulp.task('lint', function() { 
    return gulp.src(['js/**/*.js']) 
     // eslint() attaches the lint output to the eslint property 
     // of the file object so it can be used by other modules. 
     .pipe(eslint()) 
     // eslint.format() outputs the lint results to the console. 
     // Alternatively use eslint.formatEach() (see Docs). 
     .pipe(eslint.format()) 
     // To have the process exit with an error code (1) on 
     // lint error, return the stream and pipe to failOnError last. 
     .pipe(eslint.failOnError()); 
}); 

gulp.task('test', function() { 
    return gulp.src('tests/test.js', {read: false}) 
     // gulp-mocha needs filepaths so you can't have any plugins before it 
     .pipe(mocha({reporter: 'list'})); 
}); 

gulp.task('default', ['lint','test'], function() { 
    // This will only run if the lint task is successful... 
}); 

जब मैं 'घूंट' चलाने के लिए, यह अपने सभी कार्य है, लेकिन रुक जाता है पूरा करने के लिए प्रकट होता है: यहाँ मेरी gulpfile.js है। कमांड प्रॉम्प्ट पर वापस जाने के लिए मुझे ctrl + c करना होगा। मैं इसे ठीक से खत्म करने के लिए कैसे प्राप्त करूं?

+0

आप खुद से कार्यों के किसी भी चलाते हैं, वे लटका करते हैं? मैंने यहां अपना कोड काट दिया है और चिपकाया है और इसे चलाने में कोई समस्या नहीं है। कुछ भी लटका नहीं है। – Louis

+0

मैं इसे बाद में कोशिश करूंगा, धन्यवाद। – Ooberdan

उत्तर

15

माफी, दोस्तों! यह पता चला है कि इसे gulp-mocha FAQ में संबोधित किया गया है। के शब्दों में:

टेस्ट सूट अपने टेस्ट स्वीट बाहर निकलने नहीं है, तो यह हो सकता है क्योंकि आप अभी भी एक सुस्त कॉलबैक है बाहर निकलने नहीं

, सबसे अधिक बार एक खुले डेटाबेस कनेक्शन की वजह से। आप इस संबंध बंद हो जाना चाहिए या निम्न करें:

gulp.task('default', function() { 
    return gulp.src('test.js') 
     .pipe(mocha()) 
     .once('error', function() { 
      process.exit(1); 
     }) 
     .once('end', function() { 
      process.exit(); 
     }); 
}); 
2

गल्प कार्य के अंदर एक वापसी विवरण जोड़ें। या कॉलबैक चलाएं।

gulp.task('default', ['lint','test'], function (next) { 
    // This will only run if the lint task is successful... 
    next(); 
}); 
+0

मैंने कॉलबैक दोनों की कोशिश की है, और कोई फायदा नहीं हुआ है। – Ooberdan

3

आप gulp-mocha के बाद कुछ भी नहीं चला रहे हैं, स्वीकार किए जाते हैं समाधान आप के लिए काम करेंगे।

gulp.on('stop',() => { process.exit(0); }); 
gulp.on('err',() => { process.exit(1); }); 

इसका कारण यह है काम करता है: हालांकि, अगर आप (निर्माण की तैनाती से पहले मोचा परीक्षण चलाने के उदाहरण के लिए) gulp-mocha के बाद कार्य चलाने की आवश्यकता यहाँ एक समाधान है कि अनिश्चित काल के लिए फांसी से gulp कर पाएगा, जबकि अभी भी कार्य gulp-mocha के बाद चलाने की अनुमति है gulpinheritsorchestrator से emits the events क्रमशः सभी कार्यों को पूरा करने या त्रुटि के लिए चलाया गया है।

2

मोचा 4 के उन्नयन के बाद, मैं --exit को मोचा से गुजरकर इसे हल करने में सक्षम था।

अधिक जानकारी के लिए https://boneskull.com/mocha-v4-nears-release/#mochawontforceexit देखें।

घूंट-मोचा उपयोग करते समय, के रूप में के रूप में exit: true विकल्प जोड़ने: (`घूंट test`,` घूंट lint`)

gulp.task('test', function() { 
    return gulp.src(['tests/**/*.spec.js'], {read: false}) 
    .pipe(mocha({ exit: true })); 
}); 
संबंधित मुद्दे