gulp任务
/* Run the npm script npm run buildLsdk using gulp */
gulp.task('sdk', function() {
if (process.cwd() != basePath) {
process.chdir('..');
// console.log(process.cwd());
}
spawn('./node_modules/.bin/lb-sdk', ['server/server.js', './client/src/app/shared/sdk', '-q'], {stdio: 'inherit'});
});
我得到以下堆栈跟踪,但我无法调试
Error: spawn ./node_modules/.bin/lb-sdk ENOENT
at exports._errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
at Module.runMain (module.js:607:11)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:535:3
我在节点模块中也有所有必要的文件,我们非常感谢任何帮助。
有关上述文件使用的更多参考 - https://github.com/rahulrsingh09/loopback-Angular-Starter/blob/master/gulpfile.js
答案 0 :(得分:4)
我认为这是因为lb-sdk.cmd是你应该在windows上运行的文件。当我将命令改为下面时,错误消失了。请注意,windows样式目录斜杠与linux不同。
gulp.task('sdk', function() {
spawn(
'.\\node_modules\\.bin\\lb-sdk.cmd',
[
'.\\server\\server.js',
'.\\client\\src\\app\\shared\\sdk',
'-q'
], {stdio: 'inherit'}
);
});
我找到了更多信息,我将发布第二个答案(我接受了一个答案)。
如果你想避免在windows / linux中更改目录,可以使用cross-spawn:https://www.npmjs.com/package/cross-spawn
win-spawn(来自聊天对话框)不再维护per the github repo。如果您对使用它感兴趣,请进行以下更改:
答案 1 :(得分:0)
请参考这个类似的答案,这将解决您的问题:
Convert the following npm script to gulp task
How to automate the build from the following configuration using gulp
您可以在终端中输入lb-sdk
来查看./node_modules/.bin/lb-sdk
的文档。
答案 2 :(得分:-1)
传递basePath
和server/server.js
时,您可以尝试使用./client/src/app/shared/sdk
吗?例如:
spawn(
'./node_modules/.bin/lb-sdk',
[
basePath + '/server/server.js',
basePath + '/client/src/app/shared/sdk',
'-q'
], {stdio: 'inherit'}
);