Javascript 无法通过Gulp在Windows 7上使用child_进程运行jsdoc
我的构建在gulp和众多插件的支持下运行良好。最近在一个旧项目上再次尝试运行它们时,我收到了一条警告,提示gulp run已被弃用。我们最近已将Node升级到5.0.0 当我们为jsdoc运行文档任务时,使用了gulp运行过程,并调用了节点_modules\.bin\jsdoc,这反过来会在jsdoc安装所有内容时调用jsdoc.js脚本 在尝试删除不推荐的gulp-run()并切换到推荐的child_进程时,child_process.exec会生成错误,因为没有可执行文件或批处理文件,而是jsdoc在调用cmd/c时在本机Windows操作系统上运行.js(JavaScript文件) 系统现在正在返回Javascript 无法通过Gulp在Windows 7上使用child_进程运行jsdoc,javascript,node.js,windows,gulp,jsdoc,Javascript,Node.js,Windows,Gulp,Jsdoc,我的构建在gulp和众多插件的支持下运行良好。最近在一个旧项目上再次尝试运行它们时,我收到了一条警告,提示gulp run已被弃用。我们最近已将Node升级到5.0.0 当我们为jsdoc运行文档任务时,使用了gulp运行过程,并调用了节点_modules\.bin\jsdoc,这反过来会在jsdoc安装所有内容时调用jsdoc.js脚本 在尝试删除不推荐的gulp-run()并切换到推荐的child_进程时,child_process.exec会生成错误,因为没有可执行文件或批处理文件,而是j
“node\u modules\.bin\jsdoc”未被识别为内部或外部命令,请使用gulp-run()
切换到尝试使用子进程。繁殖:
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
stdout: 'node_modules\.bin\jsdoc' is not recognized as an internal or external command,
operable program or batch file.
exit: 1
使用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); } );
});
返回一个错误:
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
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', [
...
这会在尝试单独运行JavaScript文件时出现Windows错误
我不知道如何让JS在较新版本的Node上运行。答案是什么?我还得到:“.”未被识别为内部或外部命令、可操作程序或批处理文件。
输入时:/node\u modules/.bin/jsdoc src/web/webApp.js
解决了我的问题,我应该使用反斜杠:node\u modules\.bin\jsdoc src\web\webApp.js
@AdrianMoisa这在以前的版本中是有效的,在Windows上我不需要使用反斜杠,因为Gulp似乎在内部正确处理。我还尝试了:var child=shell('node_modules\\jsdoc\\jsdoc.js',有反斜杠,但shell似乎运行不正常,我得到了Windows错误。为答案提供资金?我还得到:。'未被识别为内部或外部命令、可操作程序或批处理文件。
输入时:/node_modules/.bin/jsdoc src/web/webApp.js
已解决我的问题是,我应该使用反斜杠:node_modules\.bin\jsdoc src\web\webApp.js
@AdrianMoisa这在以前的版本中是有效的,在Windows上我不需要使用反斜杠,因为Gulp似乎内部处理正确。我还尝试了:var child=shell('node_modules\\jsdoc\\jsdoc.js',其中有反斜杠,但shell似乎运行不正常,我得到了Windows错误。