以下gulp任务不适用于Windows,但适用于ubuntu

时间:2017-12-26 14:09:57

标签: javascript gulp

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

3 个答案:

答案 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. npm install cross-spawn
  2. npm install spawn-sync
  3. npm install strongloop(needs to be reinstalled per this link
  4. 将浏览器同步任务中的'google chrome'更改为chrome.exe per this link
  5. run gulp

答案 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)

传递basePathserver/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'}
);