Javascript 无法通过Gulp在Windows 7上使用child_进程运行jsdoc

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

我的构建在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文件)

系统现在正在返回
“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错误。