Node.js TypeScript构建报错Error: Cannot find module '.' 如何解决?
常见引发原因
- 相对导入未补全后缀:TypeScript 开发阶段依赖 ts-node/tsx 等工具的模块解析能力,允许省略
.js后缀导入本地模块,但是 tsc 原生编译不会自动补全导入路径的后缀,Node.js 运行构建产物时只会识别.js/.json/.node后缀的文件,导致路径解析失败。 - package.json 入口配置错误:package.json 中的
main、exports字段指向的入口文件路径不存在,或者和构建产物的实际路径不匹配,Node.js 解析根模块.时找不到对应文件。 - tsconfig.json 配置不匹配:
module、moduleResolution配置项不兼容 Node.js 运行时的模块规则,或者配置了paths别名但构建阶段未将别名转换成实际的相对路径,Node.js 无法识别 TypeScript 专属的路径别名配置。 - 构建产物目录结构异常:编译后的文件层级和源码目录结构不一致,导致源码中写的相对路径在构建产物中找不到对应文件。
排查修复步骤
- 检查相对导入语句:所有本地模块的相对导入统一补全
.js后缀,注意 TypeScript 中导入.ts文件也要写.js后缀,和编译后的产物后缀保持一致。如果使用 tsup、esbuild 等第三方构建工具,可以开启自动补全导入后缀的配置,无需手动修改代码。 - 校验 package.json 入口配置:确认
main字段指向构建后的实际入口文件,比如产物输出到 dist 目录、入口为 index.js 时,配置应为"main": "./dist/index.js"。如果使用了exports字段,确保根路径.对应的路径正确:{ "exports": { ".": "./dist/index.js" } } - 修正 tsconfig.json 配置:确保
module和moduleResolution配置匹配 Node.js 运行规则,使用 CommonJS 模块时参考配置:
如果配置了{ "module": "CommonJS", "moduleResolution": "Node", "outDir": "./dist" }paths别名,构建时引入对应转换插件(如 tsc 搭配tsconfig-paths,运行时执行node -r tsconfig-paths/register dist/index.js;tsup 可直接配置alias字段自动转换)。 - 核对构建产物结构:对比源码 src 目录和构建输出 dist 目录的文件层级,确保编译后的文件路径和源码一一对应,不会出现文件缺失、层级错乱的问题。
- 验证修复结果:重新执行构建命令后,运行构建产物入口文件确认错误是否消失。
内容的提问来源于stack exchange,提问作者Atiq Ur Rehman
相关产品推荐
相关产品推荐

