代码之家  ›  专栏  ›  技术社区  ›  lowtex

如何调试此NodeJS错误:TypeError:无法读取未定义的属性'\u writeablestate'

  •  0
  • lowtex  · 技术社区  · 5 年前

    错误消息中引用的文件都不属于我的项目。

    代码

    在这段代码中,我在每一行上都有一个断点,它一直运行到 if 声明。之后,它打印错误消息并崩溃。

    添加任意数量的 console.log("text") 之后的语句 this.events.send 然后崩溃。

    this.events.send('request', {requestIndex: i});
    
    // wait if there is a delay for the request
    if (request.ms_delay && request.ms_delay > 0) { // execution stops after this line
        await (() => {
            return new Promise((resolve, reject) => {
                setTimeout(resolve, request.ms_delay);
            });
        })();
    }
    
    let outcome = await this.protocol.sendRequest(request);
    

    在前面的代码块中,第一行发布一个事件。因此,运行此代码。因为这个错误提到了流,而且这是代码中唯一使用流的东西,所以这个错误应该在这里的某个地方。这里引用的套接字是袜子.io插座。

    protected sendMessage(message: MessageWrapper) {
        return new Promise((resolve, reject) => {
            if (this.socket && this.socket.connected) {
                try {
                    if (message.channel) {
                        this.socket.emit(message.channel, message.body);
                        resolve();
                    } else {
                        this.socket.send(message.body);
                        resolve();
                    }
                } catch {
                    reject();
                }
            } else {
                reject();
            }
        });
    }
    

    实际上,客户机确实接收到通过套接字发送的消息。

    错误消息

    _stream_writable.js:570
      const state = this._writableState;
                         ^
    
    TypeError: Cannot read property '_writableState' of undefined
        at Writable.end (_stream_writable.js:570:22)
        at afterWrite (_stream_writable.js:483:3)
        at onwrite (_stream_writable.js:474:7)
        at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:92:10)
    Waiting for the debugger to disconnect...
    
    Process finished with exit code -1
    

    如果您能深入了解导致此问题的原因或如何调查错误,我们将不胜感激!

    0 回复  |  直到 5 年前