You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js订阅NATS Streaming Server监听时出现崩溃问题

Kubernetes中Node.js Pod通过NATS Streaming订阅监听器报错排查

报错信息

[be-contact-form] /usr/src/app/node_modules/nats/lib/nats.js:1672
[be-contact-form]     callback(err)
[be-contact-form]     ^
[be-contact-form] TypeError: Cannot read properties of undefined (reading 'emit')
[be-contact-form]     at /usr/src/app/node_modules/node-nats-streaming/lib/stan.js:884:11
[be-contact-form]     at Client.throwOrEmit (/usr/src/app/node_modules/nats/lib/nats.js:1672:5)
[be-contact-form]     at Client.handledClosedOrDraining (/usr/src/app/node_modules/nats/lib/nats.js:1595:17)
[be-contact-form]     at Client.subscribe (/usr/src/app/node_modules/nats/lib/nats.js:1727:12)
[be-contact-form]     at Stan.subscribe (/usr/src/app/node_modules/node-nats-streaming/lib/stan.js:674:29)
[be-contact-form]     at AuthVerifyListener.Listener.listen (/usr/src/app/node_modules/@paginas/common/build/events/base-listener.js:20:40)
[be-contact-form]     at /usr/src/app/src/middlewares/current-user.ts:54:6
[be-contact-form]     at Generator.next (<anonymous>)
[be-contact-form]     at /usr/src/app/src/middlewares/current-user.ts:8:71
[be-contact-form]     at new Promise (<anonymous>)

排查与解决步骤

  • 确认NATS客户端实例初始化完成
    确保调用subscribe前,Stan连接已成功建立。异步初始化时需等待connect的Promise完成,避免连接未就绪就执行订阅:

    // 正确示例
    const stan = await connect('cluster-id', 'client-id', { url: 'nats://nats-service:4222' });
    const listener = new AuthVerifyListener(stan);
    await listener.listen();
    
  • 检查BaseListener类的stan实例有效性
    验证BaseListener中的stan属性是否正确赋值,检查listen方法调用stan.subscribe时的this上下文,避免作用域问题导致stan实例丢失。

  • 验证Kubernetes中NATS服务的可达性

    • 进入Pod执行nslookup nats-service,确认能解析NATS服务的DNS地址。
    • 检查NATS服务默认端口4222是否正确暴露,Pod对应的NetworkPolicy是否允许访问该服务的IP和端口。
  • 核对NATS客户端版本兼容性
    确保node-nats-streaming和nats依赖版本匹配,避免版本不兼容引发内部实例异常。可参考官方文档使用稳定版本组合,同步升级或降级到兼容版本。

  • 检查订阅事件处理器的完整性
    确认订阅时传入的事件回调函数(如on('message')的处理逻辑)已正确定义,不存在未初始化的情况。

内容的提问来源于stack exchange,提问作者Manel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:13:17