【发布时间】:2017-12-13 19:32:29
【问题描述】:
我有以下 npm 脚本要转换为 gulp 任务
"scripts": {
"lint": "eslint .",
"start": "npm run build:sdk && node .",
"posttest": "npm run lint && nsp check",
"build:sdk": "./node_modules/.bin/lb-sdk server/server.js ./client/src/app/shared/sdk"
},
现在我希望 gulp 任务具有与 npm start 相同的功能。但我无法完成任务,因为它将运行 npm run build:sdk 然后 node 。
这是我到目前为止所做的。
gulp.task('default', function() {
gulp.run('sdk');
gulp.run('server');
gulp.watch(['./common/models/*.js'], function() {
gulp.run('server');
});
});
gulp.task('server', function() {
if (node) node.kill();
node = spawn('node', ['server/server.js'], {stdio: 'inherit'});
node.on('close', function(code) {
if (code === 8) {
gulp.log('Error detected, waiting for changes...');
}
});
});
gulp.task('sdk', function() {
spawn('./node_modules/.bin/lb-sdk server/server.js ./client/src/app/shared/sdk');
});
堆栈跟踪
Error: spawn ./node_modules/.bin/lb-sdk server/server.js ./client/src/app/shared/sdk ENOENT
at exports._errnoException (util.js:1050:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
at Module.runMain (module.js:607:11)
at run (bootstrap_node.js:423:7)
at startup (bootstrap_node.js:147:9)
at bootstrap_node.js:538:3
【问题讨论】:
-
尝试将参数作为数组传递:
spawn('./node_modules/.bin/lb-sdk', ['server/server.js ./client/src/app/shared/sdk']); -
其实我需要依次运行这两个进程,首先是 sdk,然后是服务器
-
我是说您的
spawn语句调用是错误的。这就是你得到Error: spawn ./node_modules/.bin/lb-sdk server/server.js ./client/src/app/shared/sdk ENOENT的原因。参数应作为数组传递。
标签: javascript node.js npm gulp