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

如何在VS Code中让nodemon适配TypeScript编写的ECMAScript模块?

解决TypeScript ESM项目中Nodemon即时调试问题

问题背景

使用TypeScript开发Node.js 18+应用,目标部署到Azure App Service,采用ECMAScript模块(ESM)模式以支持顶级await等特性。项目可正常构建运行,但无法通过nodemon实现即时调试,运行yarn debug时出现两类错误:

  1. --inspect参数被ts-node识别为未知选项
  2. 移除--inspect后,出现Unknown file extension ".ts"错误

错误原因分析

  1. 调试参数传递错误:ts-node的ESM模式下,--inspect需直接传递给Node.js,而非作为ts-node的命令选项
  2. ESM模块解析未配置:默认状态下ts-node未启用ESM支持,无法识别.ts格式的ESM模块文件

解决方案

1. 修改nodemon.json配置

将调试参数直接传给Node.js,并通过ts-node的ESM加载器处理TypeScript文件:

{
  "watch": ["src"],
  "ext": "ts,json",
  "exec": "node --inspect --loader ts-node/esm ./src/app.ts"
}
  • --inspect:直接传递给Node.js,启用调试端口监听(默认9229)
  • --loader ts-node/esm:指定使用ts-node的ESM加载器解析.ts文件,解决扩展名识别错误

2. 优化tsconfig.json配置(推荐)

为严格适配Node.js的ESM模块解析规则,调整编译选项:

{
  "compilerOptions": {
    // 保留原有其他配置,修改以下两项
    "module": "node16",
    "moduleResolution": "node16"
  }
}

node16模式会严格遵循Node.js的ESM与CommonJS模块解析逻辑,避免潜在的导入路径问题。

3. 验证命令行调试

运行yarn debug,此时nodemon会正常启动,监听src目录下的文件变更,同时Node.js会开启调试端口,可通过调试工具正常连接。

4. 优化VS Code launch.json配置

调整调试配置,确保VS Code能自动连接到nodemon启动的进程:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug via Nodemon",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "yarn",
      "runtimeArgs": ["nodemon"],
      "skipFiles": ["<node_internals>/**"],
      "console": "integratedTerminal",
      "env": { "NODE_ENV": "development" }
    }
  ]
}

启动该配置后,VS Code会自动连接调试端口,实现文件变更时自动重启服务并保持调试会话。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:15:31