@babel/preset-env 没有按 browserslist 转译 async/await 是怎么回事? 轩辕梓涵 提问于 2026-03-23 23:41:24 阅读 7 工具 我项目里用了 async/await,browserslist 配置了要兼容到 IE11,但打包后代码里还是原样的 async/await,没被转成 generator。是不是 preset-env 哪里没配对? 我的 Babel 配置是这样的: { "presets": [ ["@babel/preset-env", { "useBuiltIns": "usage", "corejs": 3 }] ] } Babel 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Des.辽源 Lv1 你这个问题挺常见的,通常是因为 @babel/preset-env 默认不会转译 async/await 成 ES5 的语法,除非显式地指定它。你的 Babel 配置里缺少了对 async/await 转译的支持。 建议改成这样: { "presets": [ ["@babel/preset-env", { "useBuiltIns": "usage", "corejs": 3, "targets": "> 0.25%, not dead, ie 11" }] ] } 注意 targets 字段,这里指定了要兼容到 IE11。这样 Babel 才会根据你的 browserslist 配置进行相应的转译。另外确保你的 package.json 里有正确的 browserslist 配置,比如: "browserslist": [ "> 0.25%", "not dead", "ie 11" ] 这样配置之后,Babel 应该会正确地将 async/await 转译为支持 IE11 的代码了。希望这能解决你的问题。 回复 点赞 2026-03-24 00:01 加载更多 相关推荐 1 回答 20 浏览 @babel/preset-env 没有转译可选链操作符? 我用的是 Babel 7,配置了 @babel/preset-env,但代码里的可选链(?.)在打包后居然没被转译,低版本浏览器直接报错。我的 browserslist 配置明明包含了不支持这个语法的... 设计师娇娇 工具 2026-03-10 18:37:18 2 回答 17 浏览 @babel/preset-env 没有转译箭头函数,是我配置错了吗? 我在项目里用了 @babel/preset-env,但打包后的代码里还是有箭头函数,低版本浏览器直接报错。我明明设了 targets 啊,是不是哪里没配对? 这是我的 .babelrc 配置: { &... 博主玉鑫 工具 2026-03-03 10:03:18 2 回答 35 浏览 Babel配置了preset-env为什么箭头函数没转译? 我在React项目里配置了@babel/preset-env,但代码里的箭头函数没转译成ES5,这是怎么回事? 项目里用了.babelrc配置: { "presets": ["@babel/prese... Designer°乙涵 工具 2026-02-16 16:33:25 2 回答 33 浏览 为什么用了@babel/preset-env后箭头函数没被转译? 折腾了一下午还是没解决,项目里用了Babel和@babel/preset-env配置了targets,但箭头函数在打包后居然没转译成普通函数,Chrome没问题,用IE11直接报错。配置文件应该没问题... Mr-金利 工具 2026-02-15 11:48:25 2 回答 160 浏览 为什么配置了Babel Presets后箭头函数没被转译? 在Vue项目里安装了@babel/preset-env,配置了.babelrc文件,但箭头函数还是没被转译成普通函数。试过更新Babel版本,检查过浏览器列表配置,打包后代码里箭头函数还是原样,控制台... 慕容艳苹 工具 2026-02-06 02:00:31 2 回答 30 浏览 配置了@babel/preset-react为什么还是报JSX语法错误? 刚在React项目里用Babel转译JSX,虽然装了@babel/preset-react,但编译时还是报Unexpected token错误。我的.babelrc配置是这样的: { "presets... 令狐瑞芳 工具 2026-02-07 13:11:37 1 回答 8 浏览 async/await 为什么没按顺序执行? 我写了个函数想依次请求两个接口,但发现第二个请求没等第一个完成就发出去了,是不是 async/await 用错了? 我试过把 await 放在 fetch 前面,也确认函数是 async 的,但还是不... UI春彦 前端 2026-03-22 11:17:18 1 回答 36 浏览 Babel 配合 core-js 为啥没按预期 polyfill Promise? 我用 Babel + @babel/preset-env 搭配 core-js@3 做兼容处理,目标浏览器包括 IE11。明明代码里用了 Promise,但打包后没看到自动注入的 polyfill,I... 淑涵 工具 2026-03-16 23:57:21 2 回答 22 浏览 async/await 里怎么正确处理多个异步请求的加载状态? 我用 async/await 写了个函数同时发两个请求,想在都完成后再更新页面。但 loading 状态老是控制不好,有时候一个完成了就提前关了 loading,结果第二个还没回来。试过用 Promi... 成立(打工版) 前端 2026-03-08 23:13:19 1 回答 15 浏览 postcss-preset-env 为什么没把 :focus-visible 转成兼容写法? 我用 postcss-preset-env 处理 CSS,但发现 :focus-visible 伪类在低版本浏览器里没生效。我明明开启了 stage: 3,按理说应该自动 polyfill 才对啊? ... A. 诗雅 工具 2026-02-25 08:09:18
@babel/preset-env默认不会转译async/await成 ES5 的语法,除非显式地指定它。你的 Babel 配置里缺少了对async/await转译的支持。建议改成这样:
注意
targets字段,这里指定了要兼容到 IE11。这样 Babel 才会根据你的browserslist配置进行相应的转译。另外确保你的package.json里有正确的browserslist配置,比如:这样配置之后,Babel 应该会正确地将
async/await转译为支持 IE11 的代码了。希望这能解决你的问题。