TypeScript路径在ts-node+tsconfig-paths+ESM模式下失效求助
问题解决:ts-node ESM模式下tsconfig路径别名不生效
核心原因
-r tsconfig-paths/register是为CommonJS模块设计的加载钩子,在启用--esm的ES模块模式下完全不兼容,导致路径别名无法被解析。
解决方案
方法1:命令行指定ES模块专用loader
先确保安装了最新版tsconfig-paths(需支持ES模块loader):
npm install -D tsconfig-paths@latest
替换原命令为:
ts-node --esm --loader tsconfig-paths/esm-loader src/ts-script2.ts
方法2:通过tsconfig.json配置默认loader
在tsconfig.json中添加ts-node专属配置,避免每次命令行重复输入参数:
{ "compilerOptions": { "baseUrl": "./", "paths": { "@alias/lib": ["src/lib/public-api.ts"] }, "module": "ESNext", "moduleResolution": "NodeNext" }, "ts-node": { "esm": true, "loader": "tsconfig-paths/esm-loader" } }
之后直接运行简化命令即可:
ts-node src/ts-script2.ts
额外注意事项
- 确保Node.js版本≥16,ES模块支持更稳定
- 检查
package.json中是否设置了"type": "module",这是ES模块模式的必要配置
内容的提问来源于stack exchange,提问作者KOHb
相关产品推荐
相关产品推荐

