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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:41:00