如何解决JS压缩器报“Parse error. Primary expression expected.”语法错误?
JS压缩器"Parse error. Primary expression expected"错误分析与解决
错误原因
你代码里用的?.是ES2020新增的可选链操作符,但你的JS压缩器版本过旧(比如老版UglifyJS),不支持这个新语法。压缩器解析到wizard?.data?.start时,无法识别?.这个语法结构,就会抛出"Primary expression expected"的解析错误。
解决方法
方法1:替换为ES5兼容的写法
把可选链语法改成传统的短路判断,老压缩器就能正常解析:
$('#start-input-from').on('change', ()=>{ if (wizard && wizard.data && wizard.data.start) { wizard.data.start = null; } validateInputFromToForm(wizard); })
方法2:升级压缩工具
换成支持ES2020及以上语法的压缩工具,比如:
- 升级UglifyJS到3.10.0及以上版本
- 改用Terser(UglifyJS的替代工具,原生支持现代JS语法)
方法3:先转译代码
用Babel这类转译工具,把包含可选链的ES2020代码转成ES5语法,再交给压缩器处理。转译后代码会自动替换掉?.为兼容的判断逻辑,压缩器就能正常工作。
内容的提问来源于stack exchange,提问作者Murat K.
相关产品推荐
相关产品推荐

