Express.js采用ES Module开发时导入路由提示找不到模块错误
问题原因
Node.js 原生 ES 模块(也就是你在 package.json 中配置 "type": "module" 启用的模块规范)要求导入本地自定义模块时,必须明确指定完整的文件扩展名,不能像 CommonJS 规范那样自动补全 .js 后缀。你当前导入路由的写法省略了 .js,Node.js 会将 ./routes/auth 识别为目录而非文件,查找对应目录下的入口文件失败就会抛出找不到模块的报错。
修复方法
修改 app.js 中的路由导入语句,补全 .js 后缀即可:
// 改前 import authRoutes from "./routes/auth"; // 改后 import authRoutes from "./routes/auth.js";
可选拓展(不推荐生产环境使用)
如果你希望保留 CommonJS 风格的省略扩展名写法,可以在启动服务时添加实验性参数:
node --experimental-specifier-resolution=node app.js
该功能属于 Node.js 实验特性,存在行为变更风险,生产环境建议优先使用明确补全扩展名的写法。
内容的提问来源于stack exchange,提问作者Darshan B
相关产品推荐
相关产品推荐

