NodeJS: ошибка ENOENT при вызове сценария оболочки

Ниже приведена ошибка, которую я получаю при попытке запустить скрипт оболочки, расположенный по адресу /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

1 ответ

Решение

Я забыл изменить .execFile чтобы просто .exec

Другие вопросы по тегам