Не удается запустить jsdoc через Gulp в Windows 7 с child_process

57
5

Мои сборки прекрасно работали с глотками и многочисленными плагинами. Когда вы пытаетесь запустить их недавно в более старом проекте, я получил предупреждение о том, что gulp-run устарел. Недавно мы обновили Node до 5.0.0.

Когда мы запускали наши задачи для документации для jsdoc, использовался процесс gulp-run и вызывался node_modules\.bin\jsdoc, который, в свою очередь, вызывает скрипт jsdoc.js, поскольку jsdoc устанавливает все

При попытке удалить устаревший gulp-run() и переключиться на рекомендуемый child_process, ошибки генерируются child_process.exec, поскольку нет исполняемого или пакетного файла, но вместо этого jsdoc запускает файл.js(JavaScript) на родной ОС Windows при вызове cmd/c.

Теперь система возвращает 'node_modules\.bin\jsdoc' is not recognized as an internal or external command с помощью gulp-run().

Переключение, чтобы попытаться использовать child_process.spawn:

gulp.task('docs', function () {
var shell = require('child_process').spawn;
var child = shell('node_modules/.bin/jsdoc', [
SourceCode,
'-c', 'jsdoc.json',
'-t', 'node_modules/angular-jsdoc/default',
'-d', DocumentationPath,
'./README.md',
'-r', 'app/'
],
{ stdio: 'inherit' });

// child.stdout.on('data', function(data) { console.log('stdout: ' + data); } );
// child.stderr.on('data', function(data) { console.log('stdout: ' + data); } );
child.on('exit', function(code) { console.log('exit: ' + code); } );
});

Возвращает ошибку:

events.js:141
throw er; // Unhandled 'error' event
^

Error: spawn node_modules/.bin/jsdoc ENOENT
at exports._errnoException (util.js:860:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
at onErrorNT (internal/child_process.js:344:16)
at doNTCallback2 (node.js:450:9)
at process._tickCallback (node.js:364:17)
at Function.Module.runMain (module.js:459:11)
at startup (node.js:136:18)
at node.js:972:3

Использование child_process.exec:

gulp.task('docs', function () {
var shell = require('child_process').exec;
var child = shell('node_modules/.bin/jsdoc', [
RootDir.home + SourcePath.SourceCode,
'-c', RootDir.config + 'jsdoc.json',
'-t', 'node_modules/angular-jsdoc/default',
'-d', RootDir.docs + DocumentationPath.API,
'./README.md',
'-r', RootDir.home + Paths.Modules
],
{ stdio: 'inherit' });

child.stdout.on('data', function(data) { console.log('stdout: ' + data); } );
child.stderr.on('data', function(data) { console.log('stdout: ' + data); } );
child.on('exit', function(code) { console.log('exit: ' + code); } );
});

Ошибка:

stdout: 'node_modules' is not recognized as an internal or external command,
operable program or batch file.

exit: 1

Изменение вызова для использования обратных косых черт для Windows:

gulp.task('docs', function () {
var shell = require('child_process').exec;
var child = shell('node_modules\\.bin\\jsdoc', [
RootDir.home + SourcePath.SourceCode,
'-c', RootDir.config + 'jsdoc.json',
'-t', 'node_modules/angular-jsdoc/default',
'-d', RootDir.docs + DocumentationPath.API,
'./README.md',
'-r', RootDir.home + Paths.Modules
],
{ stdio: 'inherit' });

child.stdout.on('data', function(data) { console.log('stdout: ' + data); } );
child.stderr.on('data', function(data) { console.log('stdout: ' + data); } );
child.on('exit', function(code) { console.log('exit: ' + code); } );
});

Возвращает ошибку:

stdout: 'node_modules\.bin\jsdoc' is not recognized as an internal or external command,
operable program or batch file.

exit: 1

Я также попытался вызвать JS файл:

var child = shell('node_modules\\jsdoc\\jsdoc.js', [
...

Это приводит к ошибке Windows при попытке запустить JavaScript файл самостоятельно.

Line 1/Char 1 - Invalid Character - Microsoft JScript compilation error

Я не понимаю, как попытаться запустить JS на более новую версию Node.

спросил(а) 2015-11-18T01:50:00+03:00 4 года, 10 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема