Ошибка: икру npm ENOENT
У меня есть приложение JS. Он работает хорошо на linux, но в Windows 10 я получаю сообщение об ошибке.
events.js:161
throw er; // Unhandled 'error' event
^
Error: spawn npm ENOENT
at exports._errnoException (util.js:1028: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:607:11)
at run (bootstrap_node.js:422:7)
at startup (bootstrap_node.js:143:9)
at bootstrap_node.js:537:3
а неверный код - это
const spawn = require('child_process').spawn;
const watching = [
// {service: "babel-watch"},
{service: "webpack-watch"},
// {service: "sass-watch"},
{service: "server-watch"}
];
watching.forEach(({service}) => {
const child = spawn('npm', ['run', service]);
child.stdout.on('data', d => console.log(d.toString()));
child.stderr.on('data', d => console.log(d.toString()));
});
Я нашел причину этой ошибки в github Я предполагаю, что проблема возникла nodejs spawn Doc, которые не корректно работают в окнах. Но я не знаю, как изменить этот фрагмент кода, чтобы он работал. Кто-нибудь может мне помочь?
Ответы
Ответ 1
Просто изменил эту строку
const child = spawn('npm', ['run', service]);
в эту строку
const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', service]);
Что проверяет операционную систему, если в ti-окнах она запускается npm.cmd, если это linux просто npm
Ответ 2
Я столкнулся с той же проблемой. Мой код приложения работал нормально в MAC, но в Windows он выдавал ошибку о коде, связанном с командой spawn
Ошибка возникает при работе с использованием command prompt
Когда я использовал GIT bash
для запуска приложения, ошибка не возникала. Мне не нужно было менять код