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

Node.js使用ES模块导入路由时出现Module not found错误如何解决

问题原因
  • 路径与实际文件不匹配:Node.js ESM 规范要求相对路径导入必须和实际文件的路径、大小写、扩展名完全一致。类Unix系统(Linux、MacOS)的文件系统默认大小写敏感,如果你的实际目录名是routes而非Routes、文件名是authRoute.js而非AuthRoute.js,就会触发报错。
  • 目录导入未补全路径:如果你导入的AuthRoute.js实际是一个目录,ESM 不会像 CommonJS 一样自动解析目录下的index.js文件,必须手动补全完整路径。
  • 项目模块配置错误:如果未在项目根目录package.json中声明"type": "module",Node.js 会默认使用 CommonJS 规范解析模块,也可能导致 ESM 语法的导入导出失效。
修复方案
  • 核对文件路径、大小写与扩展名:确保导入路径和实际文件完全一致,示例调整如下:
// 假设实际目录为小写routes,文件名为authRoute.js
import authRouter from './routes/authRoute.js';

如果导入的是目录下的index.js,需要补全路径:

import authRouter from './Routes/AuthRoute/index.js';
  • 确认项目模块配置:在根目录package.json中添加"type": "module"声明,开启Node.js的ESM解析模式:
{
  "type": "module",
  // 其余原有配置项
}
  • 若为TypeScript项目,需要在tsconfig.json中配置对应模块解析规则:
{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext"
    // 其余原有配置项
  }
}

导入TypeScript源文件时,导入路径需要写编译后的.js后缀,无需写源文件的.ts后缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:51:03