Node.js / Gulp:子进程spawn'错误:spawn EACCES'

时间:2017-04-14 12:23:05

标签: javascript node.js gulp

我正在尝试使用Node在Gulp中构建和运行可执行文件。我的可执行文件构建正常,但尝试运行它会出现此错误:

  

错误:产生EACCES       at exports._errnoException(util.js:1023:11)       在ChildProcess.spawn(internal / child_process.js:313:11)       at Object.exports.spawn(child_process.js:387:9)       在Gulp。 (/path/to/my/app/gulpfile.js:167:24)       在module.exports(/path/to/my/app/node_modules/orchestrator/lib/runTask.js:34:7)       在Gulp.Orchestrator._runTask(/path/to/my/app/node_modules/orchestrator/index.js:273:3)       在Gulp.Orchestrator._runStep(/path/to/my/app/node_modules/orchestrator/index.js:214:10)       在Gulp.Orchestrator.start(/path/to/my/app/node_modules/orchestrator/index.js:134:8)       在Gulp。 (/path/to/my/app/node_modules/gulp-sync/lib/index.js:51:27)       在module.exports(/path/to/my/app/node_modules/orchestrator/lib/runTask.js:34:7)

请记住,当我的gulpfile.js与我尝试运行的可执行文件位于同一目录时,我的脚本运行正常。

但是我已经将我的gulpfile.js移到了一个目录中,为了构建/运行可执行文件,我必须更改子进程的cwd,我将它生成到它上面的目录中。这样做,即使可执行文件仍然可以正常运行,它的运行仍然给我这个错误,我在网上找不到任何帮助。

我尝试在文件上设置可执行权限,认为这是权限问题,但是没有做任何事情。

我还尝试将逻辑放在shell脚本中运行可执行文件,然后使用子进程运行shell脚本(原因不是),但这也无济于事。

以下是代码:

// Spawn application server
if (os.platform() === 'win32') {
    // server = child.spawn(appName + '.exe') <-- USED TO WORK
    server = child.spawn(appName + '.exe', [], {
        cwd: mainDotGoPath
    });
} else {
    // server = child.spawn('./' + appName) <-- USED TO WORK
    server = child.spawn('./' + appName, [], {
        cwd: mainDotGoPath
    });
}

顺便说一句,路径很好,因为我使用类似的语法构建可执行文件,并且构建得很好:

var build = child.spawnSync('go', ['build'], {
    cwd: mainDotGoPath
});

有人有什么想法吗?

0 个答案:

没有答案