2017-04-10 8 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)); 
}; 

동감 표준 에러에 대해.

하지만 마지막 조각을 플러시하는 방법이 필요합니다.