You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio Code使用nodemon调试10秒后出现ECONNREFUSED错误

解决VS Code + nodemon调试TypeScript超时断开的问题

嘿,结合你用Windows7、Node.js v8.9.4的情况,我来帮你排查几个大概率的问题——都是旧版本环境里常见的坑,给你几个针对性的解决方向:

1. 新版nodemon和Node.js v8.9.4不兼容

现在最新版的nodemon早就不再支持Node.js v8了(官方要求最低Node v10),你全局装的nodemon如果是新版本,肯定会和你的Node版本出现兼容性冲突,导致调试连接不稳定,过几秒就断开。

搞定办法

  • 先卸载全局的nodemon:npm uninstall -g nodemon
  • 装个适配Node v8的旧版本,比如v2.0.20(这个版本是最后一批支持Node v8的):npm install -g nodemon@2.0.20
  • 怕全局版本搞乱的话,也可以在项目本地装:npm install nodemon@2.0.20 --save-dev,然后把launch.json里的runtimeExecutable改成${workspaceFolder}/node_modules/.bin/nodemon(Windows下不用加.cmd后缀,VS Code能自动识别)

2. VS Code调试工具和旧Node版本不匹配

VS Code自带的JavaScript调试器(Debugger for Node.js)现在已经逐渐放弃对Node v8的支持了,新版本的VS Code和Node v8的调试协议不兼容,就会出现连接超时的情况。

搞定办法

  • 要么装个旧版本的VS Code,比如1.60.x系列(这个版本还能完美兼容Node v8),去VS Code官网的历史版本页面就能找到
  • 要么在VS Code里安装旧版的Node Debug扩展(注意不是默认的那个调试器),这个扩展专门适配老Node版本的调试需求

3. 微调launch.json的配置参数

你的现有配置可以加几个参数来适配旧环境,试试这个配置:

{
  "type": "node",
  "request": "launch",
  "name": "nodemon",
  "runtimeExecutable": "nodemon",
  "program": "${workspaceFolder}/index.ts",
  "outFiles": ["${workspaceFolder}/dist/*.js"],
  "restart": true,
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen",
  "timeout": 30000, // 把超时时间拉长到30秒,给旧Node足够的启动时间
  "protocol": "inspector" // 指定用inspector协议,Node v8已经支持这个了
}

另外一定要确认你的tsconfig.json里开了sourceMap: true,不然断点没法正确映射到TS文件上。

4. Windows7的系统防火墙/杀毒软件拦截

Windows7的防火墙或者本地杀毒软件可能会拦截调试端口的连接,导致超时断开。

搞定办法

  • 先临时关掉Windows防火墙试试,如果调试正常了,就给VS Code和Node.js添加防火墙允许规则
  • 检查下你的杀毒软件,看看有没有把Node的网络连接给拦截了

还有个小技巧可以试试:先手动用nodemon --inspect dist/index.js启动项目,然后在VS Code里用“Attach”模式调试,比“Launch”模式更稳定,对应的launch.json配置是:

{
  "type": "node",
  "request": "attach",
  "name": "Attach to nodemon",
  "restart": true,
  "port": 9229, // Node调试的默认端口
  "outFiles": ["${workspaceFolder}/dist/*.js"]
}

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

火山引擎 最新活动