本质是Node.js模块解析失败,因路径未以./或../开头被误作包名查找,或大小写、扩展名、隐藏字符不匹配;需用require.resolve验证实际解析路径并确认文件真实存在。

CommonJS 模块路径错误导致的 Cannot find module 异常,本质是 Node.js 在模块解析阶段未能定位到目标文件。它不报“路径不存在”,而直接抛错,容易误判为包没装——其实文件可能就在旁边,只是写错了点或斜杠。
看清楚 require() 里写的到底是什么路径
Node.js 对路径非常严格:相对路径必须以 ./ 或 ../ 开头,否则会被当作第三方包名去 node_modules 查找。
-
require('utils')→ 查node_modules/utils,不是当前目录下的utils.js -
require('./utils')→ 正确:找同级目录的utils.js或utils/index.js -
require('utils.js')→ 错误:仍当包名处理,不会自动补.js后缀 -
require('./utils.js')→ 可行,但不推荐;优先用./utils让 Node 自动按顺序尝试.js、.json、.node
确认文件真实存在且命名完全匹配
大小写、扩展名、隐藏字符都算数。macOS 默认不区分大小写,Linux 和 Windows(WSL)严格区分。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 终端里执行
ls -l ./src/helpers/Config.js,看输出是否真有这个文件 - 检查是否误写成
config.js、Config.JS或带空格如Config .js - 在 VSCode 中右键文件 → “Copy Relative Path”,粘贴到 require 里,避免手输误差
验证模块解析的实际行为
不用猜,让 Node 告诉你它到底去了哪找:
立即学习“Java免费学习笔记(深入)”;
- 在出错位置上方加一行:
console.log(require.resolve('./your-module')),运行后会抛出完整路径或明确报错位置 - 如果报
Error: Cannot resolve module,说明路径无效;如果报路径但文件不存在,就是文件缺失 - 对疑似路径,手动执行
node -e "console.log(require.resolve('./path'))"快速验证
检查是否被 require.cache 干扰(少见但关键)
修改了文件路径后仍报老错误?可能是旧路径还缓存在 require.cache 里,尤其在热重载或测试环境中。
- 临时加
delete require.cache[require.resolve('./old-path')]强制刷新 - 调试时在终端输入
Object.keys(require.cache).filter(k => k.includes('your-module')),看是否有残留引用 - 开发中建议避免频繁修改已 require 过的路径,或统一用绝对路径 +
__dirname构造

















