You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 4 + VueJs:Webpack Encore配置支持async/await

解决Symfony 4 + Webpack Encore中async/await的regeneratorRuntime错误

我之前也碰到过一模一样的问题!这个错误本质是async/await语法依赖的regeneratorRuntime没有被正确引入,而Webpack Encore默认的Babel配置里没包含这个支持。不用去折腾原生Webpack的复杂配置,直接通过Encore的API就能轻松搞定,步骤很简单:

1. 安装必要的Babel依赖

首先需要安装两个核心包,它们会帮我们处理runtime的引入逻辑:

# 使用Yarn的话
yarn add @babel/plugin-transform-runtime @babel/runtime --dev

# 使用NPM的话
npm install @babel/plugin-transform-runtime @babel/runtime --save-dev

2. 修改Webpack Encore配置文件

打开你的webpack.config.js,在现有的Encore配置链中添加Babel插件的配置:

const Encore = require('@symfony/webpack-encore');

Encore
    // 保留你已有的配置,比如:
    // .setOutputPath('public/build/')
    // .setPublicPath('/build')
    // .addEntry('app', './assets/js/app.js')
    // ... 其他已有配置项

    // 添加Babel插件配置
    .configureBabel((config) => {
        // 引入transform-runtime插件,自动处理regeneratorRuntime
        config.plugins.push('@babel/plugin-transform-runtime');
    })

    // 可选:如果你需要兼容旧浏览器,自动按需引入polyfill
    .configureBabelPresetEnv((config) => {
        config.useBuiltIns = 'usage';
        config.corejs = 3; // 启用这个需要先安装core-js@3:yarn add core-js@3 --dev
    })
;

module.exports = Encore.getWebpackConfig();

3. 重新构建并测试

运行Encore的构建命令,让配置生效:

# 开发环境
yarn encore dev

# 生产环境
yarn encore production

刷新页面后,Uncaught ReferenceError: regeneratorRuntime is not defined的错误应该就彻底消失了!

简单解释下原理:@babel/plugin-transform-runtime会把regeneratorRuntime作为局部变量引入,既解决了缺失问题,又避免了全局变量污染;如果开启了configureBabelPresetEnv的配置,Babel还会根据你指定的浏览器范围,自动按需引入所需的polyfill,不用手动在代码里导入整个core-js,大大减少打包体积。

内容的提问来源于stack exchange,提问作者Joris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:59:02