Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用gulp运行命令以启动Node.js服务器_Javascript_Node.js_Express_Gulp - Fatal编程技术网

Javascript 使用gulp运行命令以启动Node.js服务器

Javascript 使用gulp运行命令以启动Node.js服务器,javascript,node.js,express,gulp,Javascript,Node.js,Express,Gulp,因此,我使用gulpexec(),在阅读了一些文档之后,它提到如果我只想运行一个命令,我不应该使用插件,也不应该使用我在下面尝试使用的代码 var exec = require('child_process').exec; gulp.task('server', function (cb) { exec('start server', function (err, stdout, stderr) { .pipe(stdin(['node lib/app.js', 'mongo

因此,我使用gulpexec(),在阅读了一些文档之后,它提到如果我只想运行一个命令,我不应该使用插件,也不应该使用我在下面尝试使用的代码

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
然而,我是新手,我认为这就是如何传递命令/任务。非常感谢您的帮助,谢谢

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的链接:

此解决方案在出现时显示stdout/stderr,并且不使用第三方LIB:

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

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

您还可以创建gulp节点服务器任务运行程序,如下所示:

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

如何停止其中一台服务器?@tmuecksch上面我正在运行我的节点服务器和数据库on gulp任务。如果你想停一个,跑一个,你就得喝两杯不同的酒tasks@tmuecksch
exec('killall mongod',函数(err、stdout、stderr){
我发现这是一个非常好的解决方案,另外还有一个好处,那就是将nodemon集成到其中。@T.Webster我从来都不知道!虽然我很喜欢
吞下nodemon的简单性以及它给你带来的好处。但是我会看看如何使用
child_进程。spawn()
方法谢谢,伙计!注意:您不需要gulp exec模块。在模块页面的第一个
注释中说明:
注释➝ 请记住在重新启动子进程之前先杀死它。