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

Laravel 5.3 Elixir Webpack未转译Object.assign至ECMAScript 2015问题

解决Laravel Elixir Webpack无法处理Object.assign转译的问题

我来帮你搞定这个问题——之前维护Laravel 5.x项目时我也碰到过类似的情况,下面是几个经过验证的解决方案:

方案1:添加Babel插件专门处理Object.assign

Object.assign是ES2015的原生方法,默认的Elixir Vue 2集成配置可能没包含转译它的插件。你可以安装babel-plugin-transform-object-assign来解决:

  • 先安装这个开发依赖:
npm install babel-plugin-transform-object-assign --save-dev
  • 接着在项目根目录新建一个.babelrc文件,写入以下配置:
{
  "plugins": ["transform-object-assign"]
}

重新运行gulp编译后,Webpack就会把Object.assign转译为ES5兼容的代码了。

方案2:确保babel-polyfill正确加载

你已经在gulpfile里引入了babel-polyfill,但它需要在所有业务代码之前加载才能生效。有两种方式配置:

方式A:在入口文件顶部引入

打开resources/assets/js/app.js,把这行代码放在最开头:

import 'babel-polyfill';

方式B:在gulpfile里配置Webpack入口

修改你的gulpfile.js,把polyfill加入到Webpack的入口数组中:

const elixir = require('laravel-elixir');
require("babel-polyfill");
require('laravel-elixir-vue-2');

elixir(mix => {
    mix.webpack('app.js', null, null, {
        entry: ['babel-polyfill', './resources/assets/js/app.js']
    });
});

这样polyfill会提前注入Object.assign的兼容实现,低版本浏览器也能正常运行你的代码。

方案3:更新依赖版本(针对旧版本兼容问题)

Laravel 5.3对应的Elixir版本比较老旧,可能存在依赖兼容问题。你可以更新相关依赖到适配的版本:

  1. 修改package.json里的devDependencies部分:
{
  "devDependencies": {
    "laravel-elixir": "^6.0.0-15",
    "laravel-elixir-vue-2": "^0.3.0",
    "babel-polyfill": "^6.26.0",
    "babel-plugin-transform-object-assign": "^6.22.0"
  }
}
  1. 删除旧的依赖并重新安装:
rm -rf node_modules && npm install
  1. 重新执行编译:
gulp

验证是否解决

编译完成后,打开public/js/app.js搜索Object.assign,如果看到它被转译为普通的函数实现,或者polyfill的代码已经注入,就说明问题解决了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:19:11