2017-04-05 143 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