2016-05-14 9 views
0

からの応答が、それは常にエラーアウト: ストリーミング私は<code>child_process.spawn</code>経由RVMとルビーをインストールするには、curlコマンドを実行しようとしているchild_process.spawnカール要求

let spawnProcess = spawn('\curl -sSL https://get.rvm.io | bash -s stable --ruby') 

spawnProcess.stdout.on('data', data => { 
    console.log('DATA RECEIVED') 
    console.log(data) 
}) 

spawnProcess.stdout.on('close',() => { 
    alert('done!') 
}) 

spawnProcess.stderr.on('data', function(){ 
    console.log('ON DATA') 
    console.log(arguments) 
}) 

spawnProcess.on('error', error => { 
    console.log('ON ERROR') 
    console.log(JSON.stringify(error), error) 
}) 

私が受け取るエラーは、次のとおりです。

{"code":"ENOENT","errno":"ENOENT","syscall":"spawn curl -sSL https://get.rvm.io | bash -s stable --ruby","path":"curl -sSL https://get.rvm.io | bash -s stable --ruby","spawnargs":[]} Error: spawn curl -sSL https://get.rvm.io | bash -s stable --ruby ENOENT 
    at exports._errnoException (util.js:890:11) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:182:32) 
    at onErrorNT (internal/child_process.js:348:16) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

JSON-清書バージョンは、スタックトレースすることなく、次のとおりです

{ 
    "code": "ENOENT", 
    "errno": "ENOENT", 
    "syscall": "spawn curl -sSL https://get.rvm.io | bash -s stable --ruby", 
    "path": "curl -sSL https://get.rvm.io | bash -s stable --ruby", 
    "spawnargs": [] 
} 

child_process.execを使用すると問題なく動作しますが、出力をストリームできるようにしたいと考えています。

答えて

2

child_process.spawn()には、実行するコマンドの名前とその引数のリストを渡す必要があります。あなたはそれをシェルパイプラインに供給しています。

そのために仕事に、あなたがシェルを実行し、引数としてパイプラインを渡す必要があります:

let spawnProcess = spawn('/bin/sh', [ '-c', 'curl -sSL https://get.rvm.io | bash -s stable --ruby' ]) 
関連する問題