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

Node.js使用ES6/7/8特性报ERR_MODULE_NOT_FOUND错误如何解决?

问题产生原因
  • 你使用的es2015预设早已被官方废弃,它仅支持转译ES2015(ES6)版本的语法,无法兼容ES7、ES8及更高版本的新特性,也没有适配Node.js运行环境的专属配置。
  • Babel基础配置缺少模块解析规则:Node.js原生默认遵循CommonJS规范,如果你代码中使用了ES Module的import/export语法,且没有配置Babel将ESM转译为CommonJS格式,就会触发模块找不到的报错。
  • 仅配置了.babelrc文件,但没有安装对应的转译、运行依赖包,配置无法生效。
解决方法

方案一:使用Babel转译兼容低版本Node.js

  1. 先卸载废弃的旧依赖,安装最新的Babel相关组件:
npm uninstall babel-preset-es2015
npm install @babel/core @babel/preset-env @babel/node -D
  1. 替换.babelrc的配置内容为以下内容:
{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "node": "current"
      }
    }]
  ]
}

该配置会自动匹配你当前使用的Node.js版本,转译所有该版本不支持的ES新特性,同时默认将ESM语法转为Node.js兼容的CommonJS格式。
3. 调整项目启动命令,将原本直接用node xxx.js的启动方式改为用babel-node启动,也可以先通过babel命令全量转译源码后再运行转译后的文件。
示例package.json启动配置:

{
  "scripts": {
    "start": "babel-node ./src/index.js"
  }
}

配置完成后执行npm start即可正常运行项目。
4. 如果项目用到了装饰器、类私有属性等ES7+的高级语法,还需要按需安装@babel/plugin-proposal-decorators、@babel/plugin-proposal-class-properties等对应插件,添加到.babelrc的plugins数组中即可。

方案二:高版本Node.js原生支持(无需Babel)

如果你使用的是Node.js 13.2.0及以上版本,可以直接在项目根目录的package.json中添加"type": "module"配置,Node.js就会原生支持ES Module语法,注意这种场景下import本地文件时需要补全后缀名,比如需要写import utils from './utils.js',不能省略.js后缀。

内容的提问来源于stack exchange,提问作者Hamilton Xavier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:06:04