您如何找出标准输出消息来自哪个事件?节点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))