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

Node.js+TypeScript运行报Cannot find module模块找不到错误

报错根因

tsconfig.json中配置的paths路径别名仅在TypeScript做类型检查阶段生效,默认不会将别名路径转换为Node.js可识别的真实模块路径。你当前使用ts-node直接运行TS代码时,没有引入路径映射转换的逻辑,Node.js原生CommonJS模块解析规则无法识别user/routes这类别名导入,因此抛出MODULE_NOT_FOUND错误。
额外注意:你当前的启动命令指定执行路径为./src,未明确指向入口文件./src/index.ts,也可能加剧路径解析异常。

修复方案(三选一即可,推荐方案1)

方案1:保留现有路径别名写法,添加运行时路径解析支持

这是对现有代码改动最小的方案:

  • 安装路径解析依赖:
npm install -D tsconfig-paths
  • 修改package.json中的启动命令,为ts-node注册路径映射钩子,同时明确指定入口文件:
"nodemon --watch 'src' -e ts,tsx --exec ts-node -r tsconfig-paths/register ./src/index.ts"

你的tsconfig中baseUrl和paths的映射规则本身配置正确,添加上述配置后即可正常识别别名导入。

方案2:改用相对路径导入(零额外依赖)

如果不想新增依赖,可以直接将别名导入替换为Node.js原生支持的相对路径,修改src/index.ts中的导入语句:

// 原写法 import router from "user/routes";
import router from "./user/routes";

因为index.ts和user目录同属src层级,相对路径./user/routes可以被Node.js直接解析,不需要额外配置。

方案3:替换运行时工具为自带别名解析的实现

如果你后续有更复杂的TS运行需求,可以把ts-node替换为tsx这类自带tsconfig路径别名解析的运行工具,无需额外配置即可识别paths规则:

  • 安装依赖:
npm install -D tsx
  • 修改启动命令:
"nodemon --watch 'src' -e ts,tsx --exec tsx ./src/index.ts"
注意事项

如果后续需要将TS编译为JS部署上线,记得在编译步骤添加路径别名转换逻辑(比如搭配tsc-alias处理tsc产出的JS文件,或使用tsup、rollup等自带别名解析的构建工具),避免编译后的代码仍保留别名路径导致线上运行报错。


内容的提问来源于stack exchange,提问作者Saurabh D Vyas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:01:18