gpt4 book ai didi

node.js - 在nodejs(windows)中显示正在运行的子进程的输出

转载 作者:IT老高 更新时间:2023-10-28 23:02:43 26 4
gpt4 key购买 nike

例如,我正在使用以下代码(名为 server.js)在 Node 中运行最基本的 webServer(我使用的是 windows):

    var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

我想将其作为子进程运行,并且通过以下方式成功运行:

var exec = require('child_process').exec;
var serv = exec('node server.js', function(error, stdout, stderr){
console.log('outputs & errors:' + error, stdout, stderr);
});

但是,运行第二个文件后,我什么也没有收到。没有“输出和错误”,没有“服务器运行在...”。如果我在浏览器中键入 localhost:1337,我会得到“hello world”,所以我知道它正在运行。有没有办法通过管道传输“服务器正在运行...”,这样我就可以“确定”它正在监听?

最佳答案

Exec 将在子进程完成时返回 STDOUTSTDERR,参见 exec 。这就是服务器启动时看不到任何输出的原因。

你想要的是 fork ,它会自动将子进程 STDOUTSTDERR 连接到您的父进程。如果您的子进程是 Node 进程,这是首选方式。

如果你想使用 exec,你可以使用子进程的流来获取你的数据,例如:

child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);

关于node.js - 在nodejs(windows)中显示正在运行的子进程的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15257729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com