使用import替代require时遇ERR_MODULE_NOT_FOUND错误求助
解决ES模块(import)导入时的模块找不到问题
先看你报错的核心信息:Cannot find module '...controller\constroller'——这里明显把controller拼写成了constroller,这是第一个要修正的问题。
除此之外,用import替代require时,还有几个ES模块的规则必须遵守:
- 必须指定完整文件扩展名:CommonJS的
require可以省略.js,但ES模块的import必须写全,比如import xxx from './xxx.js',不能只写./xxx - 配置项目为ES模块模式:在项目根目录的
package.json里添加"type": "module"字段,告诉Node.js把所有.js文件当作ES模块处理,否则会默认用CommonJS规则,混用两种模块语法会出问题。示例配置:
{ "name": "expense-management-system", "type": "module", // 其他原有字段... }
- 检查相对路径正确性:从
routes/userRoutes.js导入controller的话,路径应该是../controller/controller.js(假设controller文件夹和routes同级),别写错层级或者文件名。
回到你的代码,你自己写的import userRoutes from "./routes/userRoutes.js";是没问题的,报错根源在userRoutes.js内部的导入语句——把里面的constroller改成controller,再确保路径和扩展名都正确,应该就能解决问题。
内容的提问来源于stack exchange,提问作者Abbas Ali
相关产品推荐
相关产品推荐

