Node.js文件存在却触发[ERR_MODULE_NOT_FOUND]错误求助
Node.js ES模块导入报错 [ERR_MODULE_NOT_FOUND] 解决方案
问题描述
运行Express应用时抛出模块找不到错误:
[ERR_MODULE_NOT_FOUND]: Cannot find module 'F:\RnD\express-boilerplate\src\helpers\error' imported from F:\RnD\express-boilerplate\src\index.js
index.js 代码:
import express from "express"; import { ErrorHandler, handleError } from "./helpers/error"; const app = express(); app.get("/", (req, res) => { res.send("hello world"); }); app.get("/error", (req, res) => { throw new ErrorHandler(500, "My Bad"); }); app.use((req, res) => { throw new ErrorHandler(404, "Not found"); }); app.use((err, req, res, next) => { console.log(err.stack); handleError(err, res); }); app.listen(3000, () => { console.log("App starting in PORT: 3000"); });
error.js 代码:
class ErrorHandler extends Error { constructor(statusCode, message) { super(); this.statusCode = statusCode; this.message = message; } } const handleError = (err, res) => { const { statusCode, message } = err; res.status(statusCode).json({ status: "error", statusCode, message, }); }; export { ErrorHandler, handleError };
已确认文件路径正确,使用Node.js 19.3.0版本,仍报错。
排查与解决方法
- 添加文件扩展名:Node.js ES模块要求导入本地文件必须显式指定扩展名,修改导入语句为:
import { ErrorHandler, handleError } from "./helpers/error.js"; - 配置package.json的type字段:在项目根目录的
package.json中添加"type": "module",告知Node.js将.js文件视为ES模块:{ "type": "module", // 其他项目配置 } - 检查文件名大小写:Windows环境下Node.js模块解析可能严格区分大小写,确保导入路径的文件名和实际文件完全一致(如
error.js≠Error.js)。 - 验证文件存在性:通过终端命令确认文件实际存在,比如在src目录下执行:
dir .\helpers\error.js
内容的提问来源于stack exchange,提问作者Battousai
相关产品推荐
相关产品推荐

