以下是我在尝试运行位于/var/www/nodejs/restart-server.sh
的shell脚本时收到的错误。
exec error: { Error: spawn sh /var/www/nodejs/restart-server.sh ENOENT
at _errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn sh /var/www/nodejs/restart-server.sh',
path: 'sh /var/www/nodejs/restart-server.sh',
spawnargs: [],
cmd: 'sh /var/www/nodejs/restart-server.sh' }
路径有意地来自root(/)。如果我在不运行NodeJS的情况下执行此sh /var/www/nodejs/restart-server.sh
,则可以正常运行。但NodeJS似乎无法运行它。
我发现的大多数答案都说是因为文件路径不正确,或者因为它们调用的是相对路径,就好像它是根路径一样。但我故意调用根路径,路径是正确的根路径。我找不到任何其他答案。
代码
var exec = require('child_process').execFile;
var restartScript = exec('sh /var/www/nodejs/restart-server.sh',
(error, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error !== null) {
console.log('exec error:', error);
}
});
发现问题
我忘记将.execFile
更改为.exec
答案 0 :(得分:0)
我忘记将.execFile
更改为.exec