@babel/preset-env 没有按 browserslist 转译 async/await 是怎么回事? 轩辕梓涵 提问于 2026-03-23 23:41:24 阅读 66 工具 我项目里用了 async/await,browserslist 配置了要兼容到 IE11,但打包后代码里还是原样的 async/await,没被转成 generator。是不是 preset-env 哪里没配对? 我的 Babel 配置是这样的: { "presets": [ ["@babel/preset-env", { "useBuiltIns": "usage", "corejs": 3 }] ] } Babel 我来解答 赞 6 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 溢洋 ☘︎ Lv1 你遇到的问题很常见,让我来帮你梳理一下。首先你需要确保 browserslist 配置正确应用到了 Babel 中。 在你的配置里少了一个关键参数:targets。虽然用 useBuiltIns 和 corejs 做了配置,但还需要明确告诉 Babel 要兼容哪些浏览器。 试试这样修改: { "presets": [ ["@babel/preset-env", { "useBuiltIns": "usage", "corejs": 3, "targets": "> 0.25%, not dead, not ie <= 10" // 这里明确加入 targets }] ] } 另外建议检查根目录下的 .browserslistrc 文件配置是否正确。有时候这个文件的优先级比 Babel 配置更高。 如果还不行,记得看看是不是漏装了 @babel/plugin-transform-runtime 插件,这对 async/await 转译很重要。 这种前端构建问题确实挺烦人,我以前也踩过不少坑,慢慢排查总能解决的。 回复 点赞 2026-03-30 20:00 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 回答 55 浏览 @babel/preset-env 没有转译可选链操作符? 我用的是 Babel 7,配置了 @babel/preset-env,但代码里的可选链(?.)在打包后居然没被转译,低版本浏览器直接报错。我的 browserslist 配置明明包含了不支持这个语法的... 设计师娇娇 工具 2026-03-10 18:37:18 2 回答 42 浏览 @babel/preset-env 没有转译箭头函数,是我配置错了吗? 我在项目里用了 @babel/preset-env,但打包后的代码里还是有箭头函数,低版本浏览器直接报错。我明明设了 targets 啊,是不是哪里没配对? 这是我的 .babelrc 配置: { &... 博主玉鑫 工具 2026-03-03 10:03:18 2 回答 60 浏览 Babel配置了preset-env为什么箭头函数没转译? 我在React项目里配置了@babel/preset-env,但代码里的箭头函数没转译成ES5,这是怎么回事? 项目里用了.babelrc配置: { "presets": ["@babel/prese... Designer°乙涵 工具 2026-02-16 16:33:25 2 回答 56 浏览 为什么用了@babel/preset-env后箭头函数没被转译? 折腾了一下午还是没解决,项目里用了Babel和@babel/preset-env配置了targets,但箭头函数在打包后居然没转译成普通函数,Chrome没问题,用IE11直接报错。配置文件应该没问题... Mr-金利 工具 2026-02-15 11:48:25 2 回答 192 浏览 为什么配置了Babel Presets后箭头函数没被转译? 在Vue项目里安装了@babel/preset-env,配置了.babelrc文件,但箭头函数还是没被转译成普通函数。试过更新Babel版本,检查过浏览器列表配置,打包后代码里箭头函数还是原样,控制台... 慕容艳苹 工具 2026-02-06 02:00:31 2 回答 57 浏览 配置了@babel/preset-react为什么还是报JSX语法错误? 刚在React项目里用Babel转译JSX,虽然装了@babel/preset-react,但编译时还是报Unexpected token错误。我的.babelrc配置是这样的: { "presets... 令狐瑞芳 工具 2026-02-07 13:11:37 1 回答 52 浏览 postcss-preset-env 没生效?CSS 新特性还是不兼容 我在 React 项目里配了 postcss-preset-env,想用一些新 CSS 特性比如 gap 和 aspect-ratio,但打包后发现这些属性没被转成兼容写法,低版本浏览器直接忽略。是不... 极客邦安 工具 2026-03-24 23:06:20 2 回答 76 浏览 async/await 为什么没按顺序执行? 我写了个函数想依次请求两个接口,但发现第二个请求没等第一个完成就发出去了,是不是 async/await 用错了? 我试过把 await 放在 fetch 前面,也确认函数是 async 的,但还是不... UI春彦 前端 2026-03-22 11:17:18 2 回答 80 浏览 Babel 配合 core-js 为啥没按预期 polyfill Promise? 我用 Babel + @babel/preset-env 搭配 core-js@3 做兼容处理,目标浏览器包括 IE11。明明代码里用了 Promise,但打包后没看到自动注入的 polyfill,I... 淑涵 工具 2026-03-16 23:57:21 2 回答 47 浏览 async/await 里怎么正确处理多个异步请求的加载状态? 我用 async/await 写了个函数同时发两个请求,想在都完成后再更新页面。但 loading 状态老是控制不好,有时候一个完成了就提前关了 loading,结果第二个还没回来。试过用 Promi... 成立(打工版) 前端 2026-03-08 23:13:19
browserslist配置正确应用到了 Babel 中。在你的配置里少了一个关键参数:
targets。虽然用useBuiltIns和corejs做了配置,但还需要明确告诉 Babel 要兼容哪些浏览器。试试这样修改:
另外建议检查根目录下的
.browserslistrc文件配置是否正确。有时候这个文件的优先级比 Babel 配置更高。如果还不行,记得看看是不是漏装了
@babel/plugin-transform-runtime插件,这对 async/await 转译很重要。这种前端构建问题确实挺烦人,我以前也踩过不少坑,慢慢排查总能解决的。
@babel/preset-env默认不会转译async/await成 ES5 的语法,除非显式地指定它。你的 Babel 配置里缺少了对async/await转译的支持。建议改成这样:
注意
targets字段,这里指定了要兼容到 IE11。这样 Babel 才会根据你的browserslist配置进行相应的转译。另外确保你的package.json里有正确的browserslist配置,比如:这样配置之后,Babel 应该会正确地将
async/await转译为支持 IE11 的代码了。希望这能解决你的问题。