2015-01-20 21 views
28

शुरू करने के लिए gulp के साथ कमांड चला रहा है तो मैं gulp-exec (https://www.npmjs.com/package/gulp-exec) का उपयोग कर रहा हूं, जो कुछ दस्तावेज़ों को पढ़ने के बाद यह उल्लेख करता है कि यदि मैं केवल एक आदेश चलाने के लिए चाहता हूं तो मुझे प्लगइन का उपयोग नहीं करना चाहिए और कोड का उपयोग करें जिसे मैंने नीचे उपयोग करने का प्रयास किया है।Node.js सर्वर

var exec = require('child_process').exec; 

gulp.task('server', function (cb) { 
    exec('start server', function (err, stdout, stderr) { 
    .pipe(stdin(['node lib/app.js', 'mongod --dbpath ./data'])) 
    console.log(stdout); 
    console.log(stderr); 
    cb(err); 
    }); 
}) 

मैं अपना नोड.जेएस सर्वर और मोंगोडीबी शुरू करने के लिए गल्प प्राप्त करने की कोशिश कर रहा हूं। यही वह है जिसे मैं पूरा करने की कोशिश कर रहा हूं। मेरी टर्मिनल विंडो में, अपने मेरी

.pipe 

हालांकि के बारे में शिकायत, मैं घूंट नया हूँ और मैंने सोचा था कि है कि कैसे आप आदेशों/कार्य के माध्यम से गुजरती हैं। किसी भी मदद की सराहना की है, धन्यवाद।

+1

nb: आप घूंट-कार्यकारी मॉड्यूल जरूरत नहीं है। पहले 'टिप्पणी में कहा गया है: 'मॉड्यूल पृष्ठ ➝ https://www.npmjs.com/package/gulp-exec –

उत्तर

40
gulp.task('server', function (cb) { 
    exec('node lib/app.js', function (err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    cb(err); 
    }); 
    exec('mongod --dbpath ./data', function (err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    cb(err); 
    }); 
}) 
भविष्य में संदर्भ के लिए और अगर किसी और को इस समस्या भर आता है

ऊपर कोड मेरी समस्या ठीक हो गई। तो बुनियादी तौर पर, मुझे पता चला है कि अपनी ही समारोह है ऊपर और इसलिए, की जरूरत नहीं है करने के लिए:

.pipe 

मैंने सोचा था कि इस कोड:

exec('start server', function (err, stdout, stderr) { 

काम मैं कर रहा हूँ का नाम था हालांकि चल रहा है, वास्तव में यह वास्तव में क्या आदेश चल रहा है। इसलिए, मैंने इसे ऐप.जेएस पर इंगित करने के लिए बदल दिया जो मेरे सर्वर को चलाता है और मेरे मोंगोडीबी को इंगित करने के लिए ऐसा करता है।

संपादित

के रूप में @ N1mr0d कोई सर्वर उत्पादन अपने सर्वर को चलाने के लिए nodemon उपयोग करने के लिए किया जाएगा एक बेहतर तरीका होने के साथ नीचे उल्लेख। आप बस nodemon server.js चला सकते हैं जैसे आप node server.js चलाना शामिल है। Nodemon स्थापित करने के लिए

// start our server and listen for changes 
gulp.task('server', function() { 
    // configure nodemon 
    nodemon({ 
     // the script to run the app 
     script: 'server.js', 
     // this listens to changes in any of these files/routes and restarts the application 
     watch: ["server.js", "app.js", "routes/", 'public/*', 'public/*/**'], 
     ext: 'js' 
     // Below i'm using es6 arrow functions but you can remove the arrow and have it a normal .on('restart', function() { // then place your stuff in here } 
    }).on('restart',() => { 
    gulp.src('server.js') 
     // I've added notify, which displays a message on restart. Was more for me to test so you can remove this 
     .pipe(notify('Running the start tasks and stuff')); 
    }); 
}); 

लिंक::

नीचे कोड स्निपेट क्या मैं अपने घूंट कार्य में उपयोग अब अपने सर्वर को चलाने के लिए उपयोग करते हुए nodemon है stdout/stderr के रूप में दिखाया https://www.npmjs.com/package/gulp-nodemon

+2

पर टिप्पणी कैसे आप सर्वरों में से एक रोक सकता हूं? – tmuecksch

+0

ऊपर @tmuecksch मैं गलप कार्य में अपने नोड सर्वर और डेटाबेस दोनों चला रहा हूँ। यदि आप एक को रोकना चाहते हैं और एक रन करना चाहते हैं तो आपको दो अलग-अलग गल्प कार्य करना होगा – PourMeSomeCode

+0

@tmuecksch 'exec ('killall mongod', फ़ंक्शन (त्रुटि, stdout, stderr) {' –

8

यह समाधान है वे पाए जाते हैं और 3 पार्टी libs का उपयोग नहीं करता:

var spawn = require('child_process').spawn; 

gulp.task('serve', function() { 
    spawn('node', ['lib/app.js'], { stdio: 'inherit' }); 
}); 
+0

बस इसे पुनरारंभ करने से पहले बाल प्रक्रिया को मारना याद रखें। –

0

आप भी इस तरह घूंट नोड सर्वर कार्य धावक बना सकते हैं:

gulp.task('server', (cb) => { 
    exec('node server.js', err => err); 
}); 
+0

यह स्वीकार्य उत्तर से भिन्न कैसे है? – lolbas

+0

यह कम कोड वाले अन्य लोगों की तरह है। –

संबंधित मुद्दे