2016-12-16 10 views
1

.exec.spawn 사이의 개념의 차이점을 이해합니다. 간단한 명령을 실행하려고합니다. echo을 말하면됩니다.'child_process'.exec vs .spawn ENOENT

.exec를 사용하면 명령이 예상대로 작동합니다. .spawn을 사용하면 Error: spawn echo ENOENT이 표시됩니다.

내가 뭘 잘못하고 있니?

// 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 

오류가 수신 :

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 

내가 Windows에서 실행하고 있습니다!

귀하의 도움과 인내심에 감사드립니다.

+0

답변하기 어려운 코드 샘플을 제공해주십시오. 이러한 기본 명령 실행에 대한 neithr exec 또는 spawn에 대한 해결되지 않은 버그는 없습니다. –

답변

0

마침내 내 질문에 대한 답을 찾았습니다. 문제는 Windows에서 spawn 구현은 실행 파일 만 시작할 수 있다는 것입니다.

이 문제를 방지하려면 win-spawn을 사용할 수 있습니다.