首页 > 解决方案 > Node.js 应用程序在调用 WSL 2 时不断收到 ECONNRESET 错误

问题描述

在带有 WSL 2 的 Windows 10 上运行,我有一个 Node.js 应用程序 (App1),我正在尝试使用另一个 Node.js 应用程序 (App2) 加载测试。App2 模拟 App1 所依赖的 HTTP 服务,即 AWS 和 Salesforce API。Salesforce 部分使用 CometD 协议将消息推送到 App1。

App2 在 WSL 2 中的 Ubuntu 上运行。App1 在 Windows 10 上运行。两者都在同一台物理机上。

当我通过 CometD(HTTP 长轮询)将数千条消息推送到 App1 时,App1 开始阻塞并收到以下错误:

error: {
  "errno": -4077,
  "code": "ECONNRESET",
  "syscall": "read"
}

我杀死 App1 并重新启动它,但它继续收到相同的错误。无论我是通过 VSCode 运行 App1 还是仅从命令行使用 node 都没有关系。

奇怪的是,我可以使用 WSL 2 上的 bash 中的 CURL 向 App2 发出请求,并且效果很好。我能让 App1 再次与 App2 对话的唯一方法是重新启动计算机。

为什么会发生这种情况,有没有办法可以修复它而无需重新启动 Windows?

标签: node.jswindows-subsystem-for-linuxeconnreset

解决方案


重新启动 WSL 2 可以(暂时)工作,并且不需要重新启动 Windows。

从命令行运行:

wsl --shutdown

推荐阅读