web-dev-qa-db-fra.com

Erreur: spawn npm ENOENT

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 ?

14
Armen Sanoyan

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

43
Armen Sanoyan