Babel 配置 corejs 时报错怎么解决? A. 梓怡 提问于 2026-03-04 19:52:22 阅读 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 }] ] } Babelcorejs 我来解答 赞 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 · 小汐 Lv1 这个问题的关键是你可能漏装了 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 加载更多 相关推荐 1 回答 16 浏览 Babel 的 useBuiltIns 配置到底该怎么用? 我最近在项目里配置 Babel,想用 useBuiltIns: 'usage' 来按需引入 polyfill,但发现打包后体积还是很大,而且有些新 API(比如 Array.prototype.fla... 星语 工具 2026-03-01 11:25:23 2 回答 23 浏览 Babel 的 targets 配置到底该怎么写才生效? 我最近在项目里用 Babel 转译代码,想兼容到 IE11,但发现配置了 targets: { ie: '11' } 后,生成的代码还是用了箭头函数,明显没转成 ES5。是不是我写法有问题? 我的 .... 令狐煜喆 工具 2026-02-25 09:18:23 2 回答 50 浏览 Babel配置后箭头函数没转成普通函数,旧版浏览器报错怎么办? 我在项目里用了箭头函数写组件方法,按照教程安装了@babel/preset-env并配置了.babelrc: { "presets": ["@babel/preset-env"] } 但打包后代码里箭... 萌新.文雅 工具 2026-02-15 13:24:30 2 回答 29 浏览 为什么我的Babel配置无法转换ES6箭头函数? 大家好,我在项目里用了Babel转码,但箭头函数一直没被转成ES5语法。配置文件和代码都检查了好几遍,但还是不行... 我的.babelrc配置是这样写的: { "presets": ["@babel... Newb.玉曼 工具 2026-02-18 09:00:37 2 回答 34 浏览 Babel配置中设置targets时,为什么指定了浏览器版本却没转译某些语法? 我在项目里用Babel配置了targets为"chrome 90",但发现代码里的箭头函数() => {}仍然没被转译。明明用的是Chrome 80测试时会报错啊,这是怎么回事? 尝试过在.ba... UX文轩 工具 2026-02-16 16:50:25 1 回答 29 浏览 Babel配置了preset-env为什么箭头函数没转译? 我在React项目里配置了@babel/preset-env,但代码里的箭头函数没转译成ES5,这是怎么回事? 项目里用了.babelrc配置: { "presets": ["@babel/prese... Designer°乙涵 工具 2026-02-16 16:33:25 1 回答 29 浏览 为什么用了@babel/preset-env后箭头函数没被转译? 折腾了一下午还是没解决,项目里用了Babel和@babel/preset-env配置了targets,但箭头函数在打包后居然没转译成普通函数,Chrome没问题,用IE11直接报错。配置文件应该没问题... Mr-金利 工具 2026-02-15 11:48:25 1 回答 49 浏览 Babel配置中如何同时支持ES模块和CommonJS? 我在升级项目Babel配置时遇到了问题。之前用@babel/preset-env默认配置没问题,但今天想让代码同时兼容ES模块和CommonJS时,打包后出现Unexpected token 'exp... 司徒斐然 工具 2026-02-14 13:16:24 2 回答 148 浏览 为什么配置了Babel Presets后箭头函数没被转译? 在Vue项目里安装了@babel/preset-env,配置了.babelrc文件,但箭头函数还是没被转译成普通函数。试过更新Babel版本,检查过浏览器列表配置,打包后代码里箭头函数还是原样,控制台... 慕容艳苹 工具 2026-02-06 02:00:31 2 回答 66 浏览 为什么配置了Babel的@babel/preset-react后JSX还是无法转换? 我在React项目里用Babel处理JSX,已经安装了@babel/preset-react并配置到.babelrc里了,但打包后浏览器还是报错"Uncaught SyntaxError: Unexp... FSD-倩云 工具 2026-02-05 06:23:27
corejs: 3这种写法。改下你的 babel 配置,把 corejs 改成
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 就行。
让我解释下具体原因和解决方案:
首先,core-js@3 是个大版本,而 Babel 需要知道具体的小版本号。你只装了 core-js@3 还不够,必须指定完整版本号。你可以这样检查当前安装的版本:
解决方法有两种:
第一种是明确安装具体版本(推荐):
第二种是在 babel 配置里显式声明版本号:
为什么这么麻烦?因为 Babel 在做 polyfill 注入时,需要精确知道 core-js 的模块结构,不同小版本间可能有差异。新版 Babel 会严格校验这个匹配关系。
额外提示:如果你用 yarn,记得检查下 lock 文件里 core-js 的版本是否一致。我昨天就被这个坑过,明明装了 3.33.0,但 lock 文件里锁的是旧版本...