Node.js ES Module导入无法识别../前缀 报ERR_MODULE_NOT_FOUND错误
报错根因
Node.js 原生ES Module的路径解析规则和CommonJS存在明确差异:
- CommonJS 模式下的
require()语法支持自动补全.js、.json等扩展名,也支持自动读取目录下的index.js作为目录入口 - 原生ESM 模式下的
import语法不支持自动补全文件扩展名,相对路径导入必须写全完整的文件扩展名,否则Node无法定位到目标文件。
你当前代码里folder/test.js的导入路径写为../module,缺少.js后缀,Node找不到对应文件,因此抛出ERR_MODULE_NOT_FOUND错误。
修复方法
直接修改folder/test.js中的导入语句,补全文件扩展名即可:
// folder/test.js import { test } from "../module.js"
如果修改后缀后仍存在报错,可额外检查ESM启用配置:
- 若使用
.js作为ESM文件后缀,需要在项目根目录的package.json中添加"type": "module"配置 - 若不想修改package.json配置,也可以将所有ESM文件的后缀改为
.mjs,Node会默认将.mjs后缀的文件按ES Module规则解析。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

