簡體   English   中英

NodeJS:調用shell腳本時出現ENOENT錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM