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

配置tsconfig自定义路径后tsc编译正常,Node运行却提示找不到模块

问题本质

TypeScript的paths和baseUrl只是给编译器用的配置——帮TS识别你的别名导入,避免编译报错,但Node.js运行时根本不认这些自定义别名。Next.js能直接用是因为框架内部已经做了别名解析的处理,普通Node项目得自己加额外配置才行。

解决办法

方案一:用tsconfig-paths让Node识别别名

这是最适配现有tsconfig的方案:

  1. 先装依赖:
npm install tsconfig-paths --save-dev
  1. 运行编译后的代码时,加上tsconfig-paths/register的钩子:
node -r tsconfig-paths/register dist/你的入口文件.js

嫌每次敲麻烦就写到package.json的scripts里:

{
  "scripts": {
    "start": "node -r tsconfig-paths/register dist/index.js"
  }
}

如果用ts-node直接跑TS代码,也可以这么加:

ts-node -r tsconfig-paths/register app/你的入口文件.ts

方案二:编译时直接把别名转成相对路径

用这个方案的话,编译出来的代码里就都是正常的相对路径了,Node直接跑就行:

  1. 装需要的包:
npm install ttypescript typescript-transform-paths --save-dev
  1. 修改tsconfig.json,加个插件配置:
{
  "compilerOptions": {
    // 原来的配置都保留,新增下面的plugins
    "plugins": [
      { "transform": "typescript-transform-paths" }
    ]
  }
}
  1. 用ttsc代替原来的tsc命令编译:
npx ttsc

同样可以写到scripts里:

{
  "scripts": {
    "build": "ttsc"
  }
}

方案三:手动设置NODE_PATH(不推荐)

通过环境变量指定模块查找路径,缺点是不够灵活,跨系统可能有差异:

# Linux/macOS下
NODE_PATH=./app node dist/你的入口文件.js

# Windows cmd下
set NODE_PATH=./app && node dist/你的入口文件.js

# Windows PowerShell下
$env:NODE_PATH="./app"; node dist/你的入口文件.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:01:00