2017-08-06 2 views
0

J'utilise la commande exec pour la comprendre en installant le module de noeud child_process. Ci-dessous figurent les lignes de code. En regardant la sortie, il montre que mon exec() ne fonctionne pas comme prévu.La commande exec() n'affiche pas la sortie dans stdout

exec.js

console.log('1') 
var exec = require('child_process').exec; 
console.log('2'); 
exec('node -v', function (error, stdout, stderr) { 
    console.log('stdout', +stdout); 
    console.log('stderr', +stderr); 
    if (error !== null) { 
     console.log('exec error: ', + error); 
    } 
}); 

package.json

{ 
    "name": "exec", 
    "version": "1.0.0", 
    "description": "", 
    "main": "exec.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "child_process": "^1.0.2" 
    } 
    } 

Lorsque la commande en cours d'exécution node exec.js il affiche la sortie suivante comme suit

1 
2 
stdout NaN 
stderr 0 

Répondre

1

Dans chacun de vos appels de fonction console.log, vous avez un + devant chacun de vos noms de variables. Cela essaie de convertir la valeur de la variable en nombre. Supprimez le + dans les lignes 5,6 et 8 et le code doit s'exécuter comme prévu.

De même, il est préférable d'utiliser console.error pour générer une erreur standard.

console.log('1') 
var exec = require('child_process').exec; 
console.log('2'); 
exec('node -v', function (error, stdout, stderr) { 
    console.log('stdout', stdout); 
    console.error('stderr', stderr); 
    if (error !== null) { 
     console.log('exec error: ', error); 
    } 
});