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

Yarn Monorepo中Nodemon无法识别ORM包TS导出的配置问题

解决Yarn Monorepo中nodemon加载依赖包TS源码的问题

核心原因

你的api包通过nodemon+ts-node运行TS代码时,默认会读取orm包package.json的main字段去加载编译后的dist/index.js,但开发场景下要么orm包还未编译,要么TS语法(比如枚举、类型导出)编译为JS后无法被TS编译器正确识别,从而触发TS2305导出成员不存在的错误。

解决方案

不需要修改orm包的main字段,通过以下配置让nodemon自动加载依赖包的TS源码:

方案1:配置TypeScript路径映射 + tsconfig-paths

  1. 在api包的tsconfig.json中添加路径映射,将orm包指向其源码目录:
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@your-project/orm": ["../orm/src"] // 替换为你的orm包实际名称和路径
    }
  },
  "include": ["src/**/*"]
}
  1. 在api包的nodemon.json中配置ts-node加载路径映射:
{
  "watch": ["src", "../orm/src"], // 可选:监听orm源码变化自动重启
  "ext": "ts",
  "exec": "ts-node --require tsconfig-paths/register src/index.ts"
}
  1. 确保orm包的package.json中添加types字段指向源码类型:
{
  "main": "dist/index.js",
  "types": "src/index.ts", // 开发时用源码类型,生产环境可改为dist/index.d.ts
  "scripts": {
    "build": "tsc"
  }
}

方案2:使用TypeScript项目引用(适合大型monorepo)

  1. 在orm包的tsconfig.json中开启项目组合模式:
{
  "compilerOptions": {
    "composite": true,
    "declaration": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"]
}
  1. 在api包的tsconfig.json中引用orm包:
{
  "compilerOptions": {
    "baseUrl": "."
  },
  "references": [{"path": "../orm"}],
  "include": ["src/**/*"]
}
  1. 修改api包的nodemon执行命令:
{
  "watch": ["src", "../orm/src"],
  "ext": "ts",
  "exec": "ts-node --transpile-only src/index.ts"
}

项目引用会让TS自动处理依赖包的源码解析,无需额外路径映射。

方案3:直接在package.json脚本中配置(快速临时方案)

如果不想修改tsconfig,可在api包的package.json中修改dev脚本:

"scripts": {
  "dev": "nodemon --exec 'ts-node -r tsconfig-paths/register src/index.ts' --ext ts"
}

配合方案1中的tsconfig路径映射即可生效。

注意事项

  • 确保api包的package.json中已正确依赖orm包(如"@your-project/orm": "*"),Yarn Workspaces会自动关联本地包。
  • 开发时无需提前编译orm包,ts-node会实时编译TS源码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:17:31