2017-04-10 109 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瀏覽器打印到標準輸出/標準錯誤而不打印換行字符?

+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)); 
}; 

同上,用於標準錯誤。

但是你需要一種方法來刷新最後一片。