Babel 转换后为什么箭头函数没变成普通函数?

丽丽🍀 阅读 44

我用 Babel 把 ES6 代码转成 ES5,但发现箭头函数还是原样保留,没变成 function 形式。

我的 .babelrc 配置是这样的:

{
  "presets": ["@babel/preset-env"]
}

项目里也装了 @babel/preset-env,按理说应该会转换才对啊?是不是还要额外配什么插件?

我来解答 赞 15 收藏
二维码
手机扫码查看
2 条解答
Designer°光远
问题应该出在你的 Babel 配置或者环境设置上。虽然你用了 @babel/preset-env,但是这个 preset 默认不会转换箭头函数到普通函数,除非你明确地指定 target 环境需要这样做。你需要在 .babelrc 中添加 targets 配置,告诉 Babel 你的代码需要兼容到哪个版本的浏览器或 Node.js。比如这样配置:

{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["last 2 versions", "ie >= 11"]
}
}]
]
}


这里配置的目标环境是支持最近两个浏览器版本以及 IE 11 及以上,你可以根据自己的需求调整 browsers 字段的值。这样配置之后,Babel 应该会把箭头函数转换成普通函数。
点赞
2026-03-23 14:15
萌新.金静
Babel 默认情况下会根据你的 target 环境来决定是否转换箭头函数。看起来你的配置没问题,但可能是因为你指定的目标环境支持箭头函数,所以 Babel 没有进行转换。

试试这个方法,在你的 .babelrc 文件里添加 targets 配置,强制 Babel 转换箭头函数。比如:

{
"presets": [
["@babel/preset-env", {
"targets": {
"ie": "11"
}
}]
]
}


这里我假设你想兼容 IE11,你可以根据实际需求调整 targets 配置。这样 Babel 就会把箭头函数转换成普通的 function 形式。
点赞
2026-03-23 12:00