我正在尝试使用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
});
有人有什么想法吗?