Babel插件没生效,箭头函数还是没转成普通函数? Top丶云飞 提问于 2026-03-07 16:55:17 阅读 44 工具 我在项目里配了@babel/plugin-transform-arrow-functions,但打包后的代码里箭头函数还是原样保留,根本没转换。是不是我插件配置写错了? 我的Babel配置是这样的: module.exports = { plugins: ['@babel/plugin-transform-arrow-functions'] }; 源码里有类似const fn = () => {}这样的写法,结果输出文件里还是箭头函数,完全没变……难道这个插件现在不工作了? 我来解答 赞 6 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 Newb.悦洋 Lv1 兄弟,你这个问题挺常见的,先说原因: 你的配置本身没写错,但问题在于——@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 爱学习的康康 Lv1 你少配了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 加载更多 相关推荐 1 回答 57 浏览 Babel插件里怎么判断一个节点是不是箭头函数? 我正在写一个Babel插件,想只处理箭头函数,但不知道怎么准确判断节点类型。试过node.type === 'ArrowFunctionExpression',但在某些情况下好像不生效? 比如下面这段... 技术彦杰 工具 2026-03-30 22:02:11 2 回答 43 浏览 Babel 转换后为什么箭头函数没变成普通函数? 我用 Babel 把 ES6 代码转成 ES5,但发现箭头函数还是原样保留,没变成 function 形式。 我的 .babelrc 配置是这样的: { "presets": ["@babel/pre... 丽丽🍀 工具 2026-03-23 11:29:17 1 回答 72 浏览 Babel插件里怎么判断一个节点是不是箭头函数? 我在写一个Babel插件,想在遍历AST的时候识别出箭头函数,但不确定该用什么条件判断。试过 node.type === 'ArrowFunctionExpression',但有时候好像不生效? 比如... 慕容爱军 工具 2026-03-21 20:01:17 1 回答 57 浏览 Babel插件里怎么准确判断一个节点是不是箭头函数? 我最近在写一个Babel插件,想专门处理箭头函数,但发现用 path.isArrowFunctionExpression() 有时候不生效。比如遇到这种写法:const fn = () => {... 公孙馨翼 工具 2026-03-15 05:19:17 2 回答 37 浏览 @babel/preset-env 没有转译箭头函数,是我配置错了吗? 我在项目里用了 @babel/preset-env,但打包后的代码里还是有箭头函数,低版本浏览器直接报错。我明明设了 targets 啊,是不是哪里没配对? 这是我的 .babelrc 配置: { &... 博主玉鑫 工具 2026-03-03 10:03:18 2 回答 75 浏览 为什么我的Babel配置无法转换ES6箭头函数? 大家好,我在项目里用了Babel转码,但箭头函数一直没被转成ES5语法。配置文件和代码都检查了好几遍,但还是不行... 我的.babelrc配置是这样写的: { "presets": ["@babel... Newb.玉曼 工具 2026-02-18 09:00:37 2 回答 81 浏览 Babel配置后箭头函数没转成普通函数,旧版浏览器报错怎么办? 我在项目里用了箭头函数写组件方法,按照教程安装了@babel/preset-env并配置了.babelrc: { "presets": ["@babel/preset-env"] } 但打包后代码里箭... 萌新.文雅 工具 2026-02-15 13:24:30 2 回答 51 浏览 为什么用了@babel/preset-env后箭头函数没被转译? 折腾了一下午还是没解决,项目里用了Babel和@babel/preset-env配置了targets,但箭头函数在打包后居然没转译成普通函数,Chrome没问题,用IE11直接报错。配置文件应该没问题... Mr-金利 工具 2026-02-15 11:48:25 2 回答 53 浏览 Babel插件怎么处理JSX中的自定义组件标签? 我写了个Babel插件想把所有自定义组件(首字母大写的JSX标签)替换成函数调用,但插件好像没生效。我试过匹配JSXOpeningElement节点,判断name.name[0]是不是大写,但调试发现... 继芳🍀 工具 2026-02-25 19:46:21 2 回答 55 浏览 Babel配置了preset-env为什么箭头函数没转译? 我在React项目里配置了@babel/preset-env,但代码里的箭头函数没转译成ES5,这是怎么回事? 项目里用了.babelrc配置: { "presets": ["@babel/prese... Designer°乙涵 工具 2026-02-16 16:33:25
你的配置本身没写错,但问题在于——
@babel/plugin-transform-arrow-functions这个插件在 Babel 7 里基本属于鸡肋,因为它的工作早被@babel/preset-env接管了。实际情况是:只要你配了合适的 targets 或者 preset,箭头函数会自动转成普通函数。如果没转,99%是因为你的目标环境配置成了支持 ES6+。
解决方案:
检查你的 Babel 配置里有没有设置
targets,比如:只要你 targets 设得够老,箭头函数妥妥给你转成
function。如果你就只想用那个插件显式转,不想要整个 preset,可以试试:
preset-env 会自动包含箭头函数转换,比单独配那个插件省心多了。
另外确认一下你装的是
@babel/plugin-transform-arrow-functions而不是旧版的babel-plugin-transform-es2015-arrow-functions(Babel 6 的写法)。1. 推荐方案:
2. 硬要用单独插件的话:
我之前也遇到过,Babel这货不配targets就偷懒不干活。