![](/img/trans.png)
[英]NodeJs script with child_process spawn on Windows, why I need 'shell: true' for ENOENT error?
[英]NodeJS: ENOENT error on calling a shell script
以下是嘗試運行位於/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' }
該路徑是有意從根(/)開始的。 如果我在不運行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
我忘了將.execFile
更改為.exec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.