管道子进程stdout&stdin到node.js和browserify中的浏览器

ssa*_*ngi 5

我试图将child_process的stdout和stdin传递给浏览器并在html页面中显示它.我使用browserify来使node.js在浏览器上运行.我生成child_process的代码是这样的.

var child = require('child_process');

var myREPL = child.spawn('myshell.exe', ['args']);

 // myREPL.stdout.pipe(process.stdout, { end: false });

 process.stdin.resume();

 process.stdin.pipe(myREPL.stdin, { end: false });

 myREPL.stdin.on('end', function() {
   process.stdout.write('REPL stream ended.');
 });

 myREPL.on('exit', function (code) {
   process.exit(code);
 });

 myREPL.stdout.on('data', function(data) {
    console.log('\n\nSTDOUT: \n');
    console.log('**************************');
    console.log('' + data);
    console.log('==========================');
 });
Run Code Online (Sandbox Code Playgroud)

我使用browserify创建了一个bundle.js,我的html看起来像这样.

<!doctype html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title></title>
            <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
            <script src="bundle.js"></script>
            <script src="main.js"></script>
        </head>
        <body>

        </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

我试图避免运行http服务器并在浏览器中将结果传递给它.还有其他方法我可以做到吗?谢谢

Tho*_*enz 4

您应该研究hyperwatch,它将服务器端 stdout/stderr 通过管道传输到浏览器,并将其呈现为与终端中显示的完全相同(包括颜色)。

如果它不能完全解决您的问题,通读代码至少应该对您有帮助。它在底层使用hypernal将终端输出转换为 html。