Я пытаюсь получить spawn
для выполнения rm -rf node_modules
, за которым следует npm install
(в Windows 7; команды nx предоставлены прозрачно установленным CygWin. Все команды nx разрешают на командной строке просто отлично).
Я изначально использовал это с помощью exec
, но хотел поймать информацию stdout/stderr по мере ее возникновения, поэтому я решил использовать spawn
и переписать код для его использования. Однако это все ломает.
Команда rm
, переписанная, стала следующей:
var spawn = require("child_process").spawn,
child = spawn("rm", ["-rf", "node_modules"]);
child.stdout.on('data', function (data) { console.log(data.toString()); });
child.stderr.on('data', function (data) { console.log(data.toString()); });
child.on('error', function() { console.log(arguments); });
Однако при запуске это приводит к следующей ошибке:
rm: unknown option -- ,
Try `rm --help' for more information.
Команда npm
, переписанная, стала следующей:
var spawn = require("child_process").spawn,
child = spawn("npm", ["install"]);
child.stdout.on('data', function (data) { console.log(data.toString()); });
child.stderr.on('data', function (data) { console.log(data.toString()); });
child.on('error', function() { console.log(arguments); });
Однако при запуске это приводит к следующей ошибке:
{
'0': {
[Error: spawn ENOENT]
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn'
}
}
Как заставить spwn запускать те же команды, которые отлично работали с помощью exec
, не вызывая ошибок во всем месте? И почему это не работает? Чтение API, http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options, похоже, предполагает, что именно так предполагается использовать икру...