2017-10-16 2 views
0

ich Laich verwendet, um ein Skript auszuführen, aber das Skript muss node8.x während meine Standard-Version ist 6.NodeJS: Wie Knoten Version mit NVM zu ändern, während child_process Spawn mit

so, wie mit Knoten-Version ändern nVM bei der Verwendung von child_process Spawn

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; 
 
}

Antwort

0

Sie können den Code ändern, eine Skriptfunktion aufzurufen, die in-turn der Knoten Version der Shell-Schalter (mit nVM), ruft dann das Skript.

#!/bin/sh 

nvm use v8.7.0 
node dist/app.js 

Ich habe versucht, so etwas wie

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

Aber es gibt die folgenden Fehler

Error: spawn nvm ENOENT 

auf, gräbt weiter, es zu tun, scheint, dass sie nvm direkt von jedem Knoten Skript nicht aufrufen können , Begründung dafür ist hier gegeben @Github. Ich werde versuchen, weiter unten zu suchen, wenn eine andere mögliche Lösung existiert :)

Hoffe, das hilft!

0

wenn Sie .js-Datei ausführen. Sie müssen verwenden 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); 
Verwandte Themen