2017-10-16 66 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); 
相关问题