'child_process'.exec против .spawn ENOENT

Я понимаю разницу между понятиями .exec и .spawn. Я пытаюсь запустить простую команду, скажем, echo.

С .exec команда работает должным образом. С .spawn я получаю Error: spawn echo ENOENT.

Что я делаю неправильно?

// WORKS AS EXEPCTED
const exec= require('child_process').exec;
exec("echo hello", function(err, stdout) {
    console.log(stdout);
});

// THROWS
const spawn = require('child_process').spawn;
spawn("echo", ["hello"]); // fail

Получена ошибка:

Error: spawn echo ENOENT
at exports._errnoException (util.js:1026:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
at Module.runMain (module.js:606:11)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3

Я работаю в Windows!

Спасибо за вашу помощь и терпение.


person Linvi    schedule 16.12.2016    source источник
comment
Пожалуйста, предоставьте свой пример кода, без которого трудно ответить. Нет выдающихся ошибок ни в exec, ни в spawn при выполнении таких базовых команд.   -  person Gireesh Punathil    schedule 16.12.2016


Ответы (1)


Наконец-то я нахожу ответ на свой вопрос. Проблема в том, что реализация spawn в Windows может запускать только исполняемые файлы.

Чтобы избежать этой проблемы, вы можете использовать win-spawn.

person Linvi    schedule 17.12.2016