Node.js ストリームを使用して何かを一緒にパイプする方法はわかりました|
が、これらのスクリプトの一部が非同期になる可能性がある場合、Unix を使用して複数のスクリプトを一緒にパイプするにはどうすればよいでしょうか?
$ ./a.js | ./b.js
例:
a.js (chmod 0755)
#!/usr/bin/env node
setTimeout(function(){
console.log(JSON.stringify({ foo: 'bar' }));
}, 10);
b.js (chmod 0755)
#!/usr/bin/env node
console.log(process.argv);
これは出力です:
$ ./a.js | ./b.js
[ 'node', '/Users/viatropos/tests/b.js' ]
events.js:72
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:883:11)
at Object.afterWrite (net.js:700:19)
一見すると、うまくいかないことがたくさんあるように見えるので、どこから始めればよいかわかりません。これを機能させる方法はありますか?最終的な目標は、console.log
からの出力を取得し./a.js
て で使用できるようにすることです./b.js
。その理由は、ほとんどの場合、これらのスクリプトは一度に 1 つずつ実行されますが、それらを一緒にパイプできると便利な場合もあるため、システムが両方のケースを処理できることが理想的です。