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

ts-node中tsconfig paths配置失效,求助解决方案

解决ts-node无法识别TypeScript路径别名的问题

问题场景

项目结构:

.
├── src
│   ├── utils
│   │   └── logger.ts
│   ├── custom
│   │   └── services
|   |       └── func.service.ts
│   └── index.ts
├── package.json
└── tsconfig.json

tsconfig.json配置:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "CommonJS",
        "outDir": "./dist",
        "baseUrl": "./src",
        "removeComments": true,
        "incremental": true,
        "esModuleInterop": true,
        "paths": {
            "@utils/*": [
                "utils/*"
            ],
            "@custom/*": [
                "custom/*"
            ]
        }
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

使用import { Log } from '@utils/logger'导入模块,执行ts-node src/index时提示Cannot find module '@utils/logger',但VSCode智能提示可正常识别路径。

解决方案

步骤1:安装依赖

安装tsconfig-paths包,它能帮助ts-node解析tsconfig中的paths配置:

yarn add tsconfig-paths --dev

步骤2:修改运行配置

有两种可选方式:

  • 方式一:调整package.json的dev脚本
    将原有脚本改为:
{
  "scripts": {
    "dev": "ts-node -r tsconfig-paths/register src/index"
  }
}

-r tsconfig-paths/register会在ts-node启动前加载路径映射规则。

  • 方式二:在tsconfig.json中添加ts-node配置
    在tsconfig.json内新增ts-node配置块,让ts-node自动读取路径映射:
{
    "compilerOptions": {
        // 保留原有配置不变
    },
    "ts-node": {
        "require": ["tsconfig-paths/register"]
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

修改后直接运行原命令ts-node src/index即可生效。

步骤3:验证

重新执行yarn dev,此时ts-node将正确解析@utils/logger这类别名路径,模块找不到的错误会消失。

原因说明

VSCode的TypeScript语言服务会直接读取tsconfig中的paths配置实现智能提示,但ts-node本身默认不处理这类别名映射,必须借助tsconfig-paths将别名转换为实际文件路径,才能在运行时正确加载模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:41:33