以下は、にあるシェル スクリプトを実行しようとしたときに表示されるエラーです/var/www/nodejs/restart-server.sh
。
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' }
パスは意図的にルート (/) からのものです。sh /var/www/nodejs/restart-server.sh
NodeJSを実行していないときにこれを実行すると、機能します。しかし、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