2017-04-05 101 views
6

我有一个JS应用程序。它适用于linux,但在Windows 10中,我收到了一个错误。错误:产卵npm ENOENT

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这有没有在Windows正常工作。但我不知道如何修改这段代码来使其工作。有人能帮我吗 ?

+0

试试这里的建议:http://stackoverflow.com/questions/27688804/how-do-i-debug-error-spawn-enoent-on-node-js和这里:http://stackoverflow.com/questions/34208614/how-to -catch-an-enoent-with-nodejs-child-process-spawn获得更多的inf o关于错误 – Strelok

+0

您正在使用哪个NodeJS版本? –

+0

@PramodPatil v7.6.0 –

回答

22

只是改变这一行

const child = spawn('npm', ['run', service]); 

这一行

const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', service]); 

这是检查操作系统是否TI的Windows运行npm.cmd如果它的Linux只是NPM