ts-node无法正确解析共享tsconfig符号链接问题排查
解决ts-node无法识别TurboRepo共享tsconfig的问题
1. 补全共享tsconfig包的入口配置
在packages/typescript-config/package.json中添加入口声明,让TypeScript能正确解析包内的配置文件路径:
{ "name": "@Repo/typescript-config", "version": "0.0.0", "private": true, "main": "base.json", "exports": { ".": "./base.json" } }
TypeScript解析extends中的包名时,会依赖包的main或exports字段定位配置文件,缺少该配置会导致ts-node无法找到base.json。
2. 运行ts-node时显式指定项目配置
执行ts-node命令时,明确指定cli包的tsconfig路径,确保ts-node使用正确的配置上下文:
ts-node --project packages/cli/tsconfig.json packages/cli/src/cli.ts
若在cli包目录下运行,可简化为:
ts-node --project ./tsconfig.json src/cli.ts
3. 配置ts-node的模块解析策略
如果上述方法无效,可在cli包的package.json中添加ts-node配置,强制适配PNPM的workspace链接逻辑:
{ "ts-node": { "compilerOptions": { "moduleResolution": "node16" } } }
或直接在运行时添加参数:
ts-node --compiler-options '{"moduleResolution":"node16"}' src/cli.ts
4. 临时替代方案:使用相对路径(不推荐)
若不想修改包配置,可临时将cli的tsconfig中的extends改为相对路径:
{ "extends": "../../typescript-config/base.json", "include": ["src"] }
此方法会丢失workspace包的版本管理优势,仅适合临时测试场景。
内容的提问来源于stack exchange,提问作者Dan Lincoln
相关产品推荐
相关产品推荐

