2016-12-16 4 views
1

Je comprends la différence de concept entre .exec et .spawn. J'essaie d'exécuter une commande simple, disons echo.'child_process'.exec vs .spawn ENOENT

Avec .exec, la commande fonctionne comme prévu. Avec .spawn je reçois Error: spawn echo ENOENT.

Que fais-je incorrectement?

// WORKS AS EXEPCTED 
const exec= require('child_process').exec; 
exec("echo hello", function(err, stdout) { 
    console.log(stdout); 
}); 

// THROWS 
const spawn = require('child_process').spawn; 
spawn("echo", ["hello"]); // fail 

erreur reçu:

Error: spawn echo ENOENT 
at exports._errnoException (util.js:1026: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:606:11) 
at run (bootstrap_node.js:394:7) 
at startup (bootstrap_node.js:149:9) 
at bootstrap_node.js:509:3 

Je suis en cours d'exécution sur Windows!

Nous vous remercions de votre aide et de votre patience.

+0

Veuillez fournir votre échantillon de code, sans lequel il est difficile de répondre. Il n'y a pas de bug en cours sur neithr exec ni spawn sur de telles exécutions de commandes basiques. –

Répondre

0

Je trouve enfin la réponse à ma question. Le problème est que l'implémentation spawn sur Windows ne peut démarrer que des exécutables. Pour éviter ce problème, vous pouvez utiliser le win-spawn.