Babel 配置 corejs 时报错怎么解决?

A. 梓怡 阅读 33

我在项目里用 Babel 转译代码,想用 core-js 做 polyfill,但一跑就报错说找不到 core-js 的版本。我明明装了 core-js@3,也在 babel.config.js 里写了 corejs: 3,可还是不行。

我的配置是这样的:

module.exports = {
  presets: [
    ['@babel/preset-env', {
      useBuiltIns: 'usage',
      corejs: 3
    }]
  ]
}
我来解答 赞 4 收藏
二维码
手机扫码查看
2 条解答
士娇~
士娇~ Lv1
这问题我上周刚踩过坑,八成是你的 core-js 没装对版本。Babel 要求 core-js 必须精确匹配版本号,不能直接用 corejs: 3 这种写法。

改下你的 babel 配置,把 corejs 改成 corejs: { version: 3 } 这样:

module.exports = {
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: { version: 3 }
}]
]
}


然后检查下 package.json 里 core-js 的版本必须是 3.x 的,比如 "core-js": "^3.30.2"。装完记得删掉 node_modules 重新 npm install

要是还报错,八成是你项目里同时装了 core-js@2 和 core-js@3,Babel 会懵逼的。删干净重装 core-js@3 就行。
点赞 1
2026-03-06 23:01
Dev · 小汐
这个问题的关键是你可能漏装了 core-js 的具体版本依赖。Babel 的 corejs 配置需要和实际安装的 core-js 版本精确匹配。

让我解释下具体原因和解决方案:

首先,core-js@3 是个大版本,而 Babel 需要知道具体的小版本号。你只装了 core-js@3 还不够,必须指定完整版本号。你可以这样检查当前安装的版本:

npm list core-js


解决方法有两种:

第一种是明确安装具体版本(推荐):
npm install core-js@3.33.0 --save


第二种是在 babel 配置里显式声明版本号:
module.exports = {
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: { version: '3.33.0', proposals: true } // 这里写你实际安装的版本
}]
]
}


为什么这么麻烦?因为 Babel 在做 polyfill 注入时,需要精确知道 core-js 的模块结构,不同小版本间可能有差异。新版 Babel 会严格校验这个匹配关系。

额外提示:如果你用 yarn,记得检查下 lock 文件里 core-js 的版本是否一致。我昨天就被这个坑过,明明装了 3.33.0,但 lock 文件里锁的是旧版本...
点赞
2026-03-05 10:01