J'ai une application JS. Cela fonctionne bien sur Linux mais dans Windows 10, je reçois une erreur.
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
et le code qui est incorrect est-ce
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()));
});
J'ai trouvé la raison de cette erreur dans github Je suppose que le problème est le spawn nodejs spawn Doc qui n'a pas fonctionné correctement dans les fenêtres. Mais je ne sais pas comment modifier cet extrait de code pour le faire fonctionner. Est-ce que quelqu'un peut m'aider ?
Je viens de changer cette ligne
const child = spawn('npm', ['run', service]);
à cette ligne
const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', service]);
Qui vérifie le système d'exploitation si Windows de ti, il exécute npm.cmd si c'est linux juste npm