2017-10-16 106 views
0

我用產卵運行腳本,但該腳本node8.x需要,而我的默認版本是6的NodeJS:如何更改節點版本,NVM同時使用child_process的產卵

那麼,如何更改節點版本NVM同時使用child_process的產卵

let linkstart =()=>{ 
 
    let cp = spawn('node', ['dist/app.js']); 
 

 
    cp.stderr.on('data', (data)=>{ 
 
     console.error('stderr: ', data.toString('utf8')); 
 
    }) 
 

 
    cp.stdout.on('data', (data)=>{ 
 
     console.info('stdout: ', data.toString('utf8')); 
 
    }) 
 

 
    return cp; 
 
}

回答

0

您可以修改你的代碼,調用腳本函數,後者又shell的節點版本(使用NVM)開關,然後調用腳本。

#!/bin/sh 

nvm use v8.7.0 
node dist/app.js 

我試圖做類似

let cp = spawn('nvm', ['use', 'v8.7.0', ';', 'node', 'dist/app.js']); 

但它提供了以下錯誤

Error: spawn nvm ENOENT 

上,就可以進一步挖掘,我們似乎無法從任何節點腳本直接調用nvm ,推理在這裏給出@Github。如果有任何其他可能的解決方案存在,我會嘗試進一步下調:)

希望這有助於!

0

如果您正在運行.js文件。您需要使用process.fork

let setup = { 
    execPath : '/home/User/.nvm/v8.7.0/bin/node' , // path to binary 
    cwd: Path to dist/ 
    stdio : [0, 1, 2, 'ipc']  // [process.stdin, process.stdout, process.stderr, ipc] 
} 

let fork = require('child_process').fork; 
let child = fork('app.js', setup); 
相關問題