Node.js вызывает скрипт bash через spawn (): ENOENT - PullRequest
0 голосов
/ 09 октября 2018

Это приведет к ошибке ENOENT:

const cmd = 'bash my/path/to/script.sh';
const process = spawn(cmd);
process.on('exit', (code) => {
    console.log("Child exited");
});

Хотя этого не произойдет и сценарий будет выполнен, как ожидается:

const cmd = 'bash my/path/to/script.sh';
exec(cmd, function(err, stdout, stderr) {
    console.log(stdout);
});

Теперь я хотел бы получить поток данных от spawn() и заставить его работать.Любые предложения, откуда это может исходить?

Я проверил pwd и текущий рабочий каталог одинаков для обоих.

1 Ответ

0 голосов
/ 10 октября 2018

Похоже, проблема в том, что exec принимает один аргумент команды в виде строки с аргументами, разделенными пробелами, но для spawn вам необходимо предоставить команду (bash), а затем аргументы в виде массива:

https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

попробуйте это:

const process = spawn('bash', ['my/path/to/script.sh']);
process.on('exit', (code) => {
    console.log("Child exited");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...