您如何找出标准输出消息来自哪个事件?节点JS
How can you find out what event a stdout message is coming from? NodeJS
我目前正在编写一个脚本,我希望能够在其中读取来自 ShellJS
NPM 包生成的子进程的消息,该包使用 NodeJS child_process
。目前,我可以使用 stdout.on("data", (data) => {...})
回调读取大部分日志,但是对于我需要的一些日志,它们不会在 data
事件中通过。我尝试了很多不同的事件名称,但似乎没有什么可以接受的。在下图中,我想要但无法通过我的代码传递的消息是开头带有 <i>
的消息。这些都来自webpack
.
任何人都知道我如何获得这些消息或找出他们可能会使用什么事件?
这是我当前的代码:
_setup(){
this._shell = shell.exec("npm start", {
async: true,
cwd: this._app.cwd,
silent: false
})
if(!this._shell.stdout){
console.error("failed")
return;
}
this._shell.stdout.on("data", (data) => this._onMessage(data))
}
_onMessage(data) {
console.log("STDOUT message received", data)
const found = data.match(/.*Loopback: http:\/\/localhost:(.*)\/.*/)
console.log("found", found)
this._onUpdate();
}
所以看起来 webpack 日志是通过 stderr 传递的,因为我使用它们:
this._shell.stderr.on("data", d => this._onMessage(d))
我目前正在编写一个脚本,我希望能够在其中读取来自 ShellJS
NPM 包生成的子进程的消息,该包使用 NodeJS child_process
。目前,我可以使用 stdout.on("data", (data) => {...})
回调读取大部分日志,但是对于我需要的一些日志,它们不会在 data
事件中通过。我尝试了很多不同的事件名称,但似乎没有什么可以接受的。在下图中,我想要但无法通过我的代码传递的消息是开头带有 <i>
的消息。这些都来自webpack
.
任何人都知道我如何获得这些消息或找出他们可能会使用什么事件?
这是我当前的代码:
_setup(){
this._shell = shell.exec("npm start", {
async: true,
cwd: this._app.cwd,
silent: false
})
if(!this._shell.stdout){
console.error("failed")
return;
}
this._shell.stdout.on("data", (data) => this._onMessage(data))
}
_onMessage(data) {
console.log("STDOUT message received", data)
const found = data.match(/.*Loopback: http:\/\/localhost:(.*)\/.*/)
console.log("found", found)
this._onUpdate();
}
所以看起来 webpack 日志是通过 stderr 传递的,因为我使用它们:
this._shell.stderr.on("data", d => this._onMessage(d))