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

如何配置VSCode启动项调试Nx工作区的NestJS应用并解决import报错

问题排查与解决方案

报错核心原因是ts-node运行时的模块编译规则和项目TS配置、package.json配置不匹配,同时launch.json存在路径配置不一致问题,且Nx管理的项目直接使用ts-node启动入口文件容易和Nx内置编译规则冲突,可按以下两种方案修复:

方案1:修复现有ts-node启动配置

  • 修正路径匹配规则:launch.json中cwd已经设置为${workspaceRoot}/apps/api/,入口文件args无需写全路径,修改为["src/main.ts"]即可
  • 补充ts-node模块匹配参数:
    如果你保留package.json中的"type": "module"配置,将runtimeArgs替换为以下内容:
    "runtimeArgs": [
        "--nolazy",
        "--experimental-specifier-resolution=node",
        "-r",
        "ts-node/esm/register",
        "-r",
        "tsconfig-paths/register"
    ]
    
    同时在env配置中补充编译参数:
    "env": {
        "TS_NODE_PROJECT": "${workspaceFolder}/apps/api/tsconfig.json",
        "TS_NODE_COMPILER_OPTIONS": "{\"module\":\"ESNext\",\"esModuleInterop\":true,\"allowSyntheticDefaultImports\":true}"
    }
    
    如果你删除package.json中的"type": "module"配置,使用CommonJS模式运行,仅需在env中补充以下参数即可:
    "env": {
        "TS_NODE_PROJECT": "${workspaceFolder}/apps/api/tsconfig.json",
        "TS_NODE_COMPILER_OPTIONS": "{\"module\":\"CommonJS\"}"
    }
    
  • 校验TS配置:检查apps/api/tsconfig.json的compilerOptions字段,确认module配置和上述参数保持一致,同时开启esModuleInterop: true。

方案2(适配Nx项目,更推荐):使用Nx原生调试流程

Nx内置了完整的编译参数配置,直接调用Nx启动命令可避免配置冲突,操作如下:

  1. 替换launch.json中的启动配置:
{
    "type": "pwa-node",
    "request": "launch",
    "name": "Debug Nest Framework (Nx)",
    "cwd": "${workspaceRoot}",
    "runtimeExecutable": "npx",
    "runtimeArgs": [
        "nx",
        "serve",
        "api",
        "--inspect"
    ],
    "sourceMaps": true,
    "internalConsoleOptions": "openOnSessionStart",
    "skipFiles": ["<node_internals>/**", "node_modules/**"]
}
  1. 启动上述Debug任务后,运行原有Attach to NestJS API配置,即可绑定断点进行调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:45:03