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

Grunt 0.4.5执行build时UglifyJS不支持计算属性名报错如何解决

问题根源

报错是Grunt 0.4.5配套的grunt-contrib-uglify插件内置的uglify-js版本过低,仅支持ES5语法,无法识别ES2015引入的计算属性名语法。本地调试时没有触发压缩流程,浏览器原生支持ES6所以运行正常,执行grunt build时会走代码压缩步骤,因此触发解析错误。
由于团队禁止升级Grunt版本,高版本的grunt-contrib-uglify不兼容Grunt 0.4.5,因此升级压缩插件的方案不可行,修改代码写法是成本最低的解决方式。

最优解决方案(零配置修改,风险最低)

把动态属性从对象字面量里拆出来,用ES5支持的方括号赋值语法单独添加,修改后的代码如下:

var params = {
    "dateRange": {
        "start": localObject.startPropertyValue,
        "end": localObject.endPropertyValue
    }
};
// 追加动态键值对
params[localObject.propertyValue] = localObject.otherPropertyValue;

这种写法完全兼容ES5规范,老版本uglify可以正常解析,功能和原来的计算属性写法完全一致,不会产生任何逻辑差异。

可选备选方案(仅适用于项目存在大量ES6语法的场景)

如果项目里已经配置了grunt-babel转译流程,可以调整构建任务顺序,先把所有JS代码转成ES5语法再执行uglify压缩。如果之前没有配置Babel,不建议为了这一处修改新增构建流程,避免影响其他原有功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:03