运行 带有 gulp 的命令启动 Node.js 服务器
Running a command with gulp to start Node.js server
所以我正在使用 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。这就是我想要完成的。在我的终端window,它抱怨我的
.pipe
但是,我是 gulp 的新手,我认为这就是您通过 commands/tasks 的方式。感谢任何帮助,谢谢。
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) {
是我正在 运行ning 的任务的名称,但是,它实际上是我要 运行ning 的命令。因此,我将其更改为指向 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'));
});
});
Link 安装 Nodemon : https://www.npmjs.com/package/gulp-nodemon
此解决方案 stdout/stderr 显示为出现时不使用第 3 方库:
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);
});
所以我正在使用 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。这就是我想要完成的。在我的终端window,它抱怨我的
.pipe
但是,我是 gulp 的新手,我认为这就是您通过 commands/tasks 的方式。感谢任何帮助,谢谢。
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) {
是我正在 运行ning 的任务的名称,但是,它实际上是我要 运行ning 的命令。因此,我将其更改为指向 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'));
});
});
Link 安装 Nodemon : https://www.npmjs.com/package/gulp-nodemon
此解决方案 stdout/stderr 显示为出现时不使用第 3 方库:
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);
});