wake-up-neo.com

Einen Befehl mit gulp ausführen, um den Node.js-Server zu starten

Also verwende ich gulp-exec ( https://www.npmjs.com/package/gulp-exec ). Nachdem ich einige der Dokumentationen gelesen habe, erwähnt es, dass ich nicht einen Befehl ausführen sollte, wenn ich nur einen Befehl ausführen möchte Verwenden Sie das Plugin und verwenden Sie den Code, den ich unten ausprobiert habe.

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);
  });
})

Ich versuche, meinen Node.js-Server und MongoDB mit einem Schluck zu starten. Dies ist, was ich versuche zu erreichen. In meinem Terminalfenster klagt es über mein

.pipe

Ich bin jedoch neu im Schlucken und dachte, dass Sie damit Befehle/Aufgaben passieren. Jede Hilfe wird geschätzt, danke.

29
TryingToLearnJS
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);
  });
})

Für zukünftige Referenz und wenn sonst jemand auf dieses Problem stößt.

Der obige Code hat mein Problem behoben. Im Grunde habe ich herausgefunden, dass das Obige seine eigene Funktion ist und daher nicht nötig ist:

.pipe

Ich dachte, dass dieser Code:

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

war der Name der Aufgabe, die ich ausführte, jedoch ist es der Befehl, den ich ausführen werde. Daher habe ich dies geändert, um auf app.js zu verweisen, auf dem mein Server ausgeführt wird, und das gleiche, um auf meine MongoDB zu verweisen.

EDIT

Da @ N1mr0d im Folgenden keine Serverausgabe enthält, ist die Verwendung von nodemon eine bessere Methode zum Ausführen des Servers. Sie können nodemon server.js einfach wie node server.js ausführen.

Das folgende Code-Snippet ist das, was ich in meiner Schluckaufgabe verwende, um meinen Server jetzt mit nodemon auszuführen:

// 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'));
  });
});

Link zur Installation von Nodemon: https://www.npmjs.com/package/gulp-nodemon

40
TryingToLearnJS

Bei dieser Lösung wurden stdout/stderr angezeigt, wenn sie auftreten, und es werden keine Drittanbieter-Bibliotheken verwendet:

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

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

Sie können auch einen Gulp-Knotenserver-Taskläufer wie folgt erstellen:

gulp.task('server', (cb) => {
    exec('node server.js', err => err);
});
1
radhey shyam