2017-04-10 2 views
0

私はNode.jsコードをいくつか持っており、ブラウザを実行させたいと思っています。私のNode.jsコードの多くの場所で、process.stdout.writeprocess.stderr.writeを呼び出しました。ブラウザでブラウザでstdout.write/stderr.writeを実装する

、我々はにconsole.log/console.error

を持って、私はここに、高性能を必要としません。これらのメソッドをブラウザに実装すると、次のようになります。

process.stdout.write = function(v){ 
    console.log(v); 
}; 

process.stdout.error = function(v){ 
    console.error(v); 
}; 

これは明らかに私たちが望むものを得ることはないでしょう。 ブラウザでconsole.log/console.errorをフックして、改行文字を印刷せずにstdout/stderrに出力する方法はありますか?

+0

ブラウザのコンソールにテキストを表示したいが、改行を追加するタイミングを制御できるようにしたいのですか?あなたの最後の文章はstdout/stderrへの印刷についてまだ話しています。 – nnnnnn

+0

そうです、ブラウザの典型的なconsole.logの動作が欲しいですが、process.stdout.writeに付属の下位レベルのコントロールが必要です。私は、改行が追加されたときなどを制御したいと思います。ブラウザのconsole.logよりも低いレベルがあるかどうかはわかりません。 –

+0

個々のログ項目にCSSスタイルを適用し、折りたたむことができる入れ子になった(インデントされた)グループを作成できますが、改行を防ぐための組み込みメソッドは認識していません。私は、ログに記録するテキストをキャッシュする独自のログ関数を書くことができ、 '\ n'を含むテキストを受け取るまで、および/または指定したタイムアウトまで、' console.log() 'を実際には呼び出さない。 – nnnnnn

答えて

0

これは動作するはずです:

var stdout = ''; 
process.stdout.write = function(s) { 
    stdout += s; 
    for (var i; -1 !== (i = stdout.indexOf('\n')); stdout = stdout.slice(i + 1)) 
    console.log(stdout.slice(0, i)); 
}; 

同上stderrのために。

しかし、最後のスライスをフラッシュする方法が必要です。

関連する問題