it-swarm.com.ru

Выполнение команды с gulp для запуска сервера Node.js

Поэтому я использую gulp-exec ( https://www.npmjs.com/package/gulp-exec ), который после прочтения некоторой документации упоминает, что если я хочу просто запустить команду, мне не следует используйте плагин и используйте код, который я пробовал использовать ниже.

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

Я пытаюсь заставить gulp запустить мой сервер Node.js и MongoDB. Это то, что я пытаюсь сделать. В моем терминальном окне жалуются на мой

.pipe

Тем не менее, я новичок в глотке, и я подумал, что именно так вы проходите через команды/задачи. Любая помощь приветствуется, спасибо.

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

Для дальнейшего использования и, если кто-то еще сталкивается с этой проблемой.

Приведенный выше код исправил мою проблему. В общем, я обнаружил, что вышесказанное является его собственной функцией и, следовательно, не нужно:

.pipe

Я думал, что этот код:

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

было название задачи, которую я выполняю, однако, на самом деле это будет команда, которую я буду выполнять. Поэтому я изменил это, чтобы указать на app.js, который запускает мой сервер и сделал то же самое, чтобы указать на мою MongoDB.

ПРАВКА

Как упомянуто ниже @ N1mr0d при отсутствии вывода на сервер, лучшим способом для запуска вашего сервера будет использование nodemon. Вы можете просто запустить nodemon server.js, как если бы вы запускали node server.js.

Приведенный ниже фрагмент кода - это то, что я использую в своей задаче gulp для запуска моего сервера теперь с помощью 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: https://www.npmjs.com/package/gulp-nodemon

40
TryingToLearnJS

Это решение показывает stdout/stderr по мере их появления и не использует сторонние библиотеки:

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

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

Вы также можете создать обработчик задач сервера gulp, например так:

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