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

TypeScript Node.js项目(装饰器+ES模块)调试时装饰器元数据加载异常问题求助

TypeScript Node.js项目(装饰器+ES模块)调试时装饰器元数据加载异常问题求助

各位大佬好,我最近在调试自己的TypeScript Node.js项目时遇到了一个棘手的问题,想过来请教下大家的经验!

先给大家介绍下我的项目情况:

  • 项目基于TypeScript + Node.js开发,核心用到了这些配置:
    • 开启实验性装饰器("experimentalDecorators": true)
    • 开启装饰器元数据发射("emitDecoratorMetadata": true)
    • 使用ES模块规范("module": "NodeNext" 和 "moduleResolution": "NodeNext")
    • 用装饰器定义TypeORM实体类
  • 构建和正常运行是没问题的:用tsc --build编译,启动脚本用tsc-watch监听编译后运行node dist/src/server.js,执行npm start时完全正常,没有任何报错。

但是一到VS Code调试环节就各种踩坑:

  • 不管是用ts-node、tsx还是类似工具,总会遇到各种问题:比如识别不了.ts文件扩展名、装饰器元数据加载失败、ES模块导入报错这些。
  • 我试了好几种VS Code的launch.json配置,其中相对能跑起来的一个是这样的:
{
  "type": "node",
  "request": "launch",
  "name": "Debug Server",
  "runtimeArgs": ["--loader", "ts-node/esm"],
  "program": "${workspaceFolder}/src/server.ts",
  "sourceMaps": true,
  "skipFiles": ["<node_internals>/**"]
}
  • 这个配置下服务器确实能启动,但紧接着TypeORM就报错了:No metadata for "X" was found.

我的数据源是这么创建的:

const ds = new DataSource({
  ...
  entities: ['dist/src/entity/**/*.js'],
  subscribers: ['dist/src/subscriber/**/*.js']
});

现在我特别困惑的点是:为什么用ts-node/esm运行时,明明服务器能启动,但装饰器元数据却加载不正确呢?有没有大佬遇到过类似的情况,或者能给我一些排查方向呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:48:07