Следующая задача gulp не работает над окнами, но работает на ubuntu

Задача 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

У меня есть все необходимые файлы в модулях node, поэтому любая помощь действительно ценится.

Больше ссылок на использование файла выше - https://github.com/rahulrsingh09/loopback-Angular-Starter/blob/master/gulpfile.js

Ответ 1

Я думаю, это потому, что lb-sdk.cmd - это файл, который вы должны запускать в окнах. когда я изменил команду на ниже, ошибка исчезнет. Обратите внимание, что косые черты в стиле окна отличаются от 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 (из диалогового окна чата) больше не поддерживается за репозиторий github. Если вы заинтересованы в его использовании, внесите следующие изменения:

Ответ 3

Можете ли вы попробовать использовать 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'}
);