Babel插件没生效,箭头函数还是没转成普通函数?

Top丶云飞 阅读 44

我在项目里配了@babel/plugin-transform-arrow-functions,但打包后的代码里箭头函数还是原样保留,根本没转换。是不是我插件配置写错了?

我的Babel配置是这样的:

module.exports = {
  plugins: ['@babel/plugin-transform-arrow-functions']
};

源码里有类似const fn = () => {}这样的写法,结果输出文件里还是箭头函数,完全没变……难道这个插件现在不工作了?

我来解答 赞 6 收藏
二维码
手机扫码查看
2 条解答
Newb.悦洋
兄弟,你这个问题挺常见的,先说原因:

你的配置本身没写错,但问题在于——@babel/plugin-transform-arrow-functions 这个插件在 Babel 7 里基本属于鸡肋,因为它的工作早被 @babel/preset-env 接管了。

实际情况是:只要你配了合适的 targets 或者 preset,箭头函数会自动转成普通函数。如果没转,99%是因为你的目标环境配置成了支持 ES6+。

解决方案:

检查你的 Babel 配置里有没有设置 targets,比如:

module.exports = {
presets: [
['@babel/preset-env', {
targets: {
ie: '11', // 或者 node: '6' 之类的老版本
}
}]
]
};


只要你 targets 设得够老,箭头函数妥妥给你转成 function

如果你就只想用那个插件显式转,不想要整个 preset,可以试试:

module.exports = {
presets: [
['@babel/preset-env', { targets: { node: '6' } }]
]
};


preset-env 会自动包含箭头函数转换,比单独配那个插件省心多了。

另外确认一下你装的是 @babel/plugin-transform-arrow-functions 而不是旧版的 babel-plugin-transform-es2015-arrow-functions(Babel 6 的写法)。
点赞 1
2026-03-13 08:15
爱学习的康康
你少配了preset-env,这玩意才是老大。要么用preset-env包含所有转换(推荐),要么单独配插件时得加上targets。给你两种方案:

1. 推荐方案:
module.exports = {
presets: ['@babel/preset-env']
};


2. 硬要用单独插件的话:
module.exports = {
plugins: ['@babel/plugin-transform-arrow-functions'],
targets: '> 0.25%, not dead'
};


我之前也遇到过,Babel这货不配targets就偷懒不干活。
点赞 1
2026-03-07 17:02