Jenkins部署时触发jsPDF非严格相等警告,求问题原因解析
Terser Plugin警告:jspdf库中出现非严格相等判断(== false)的问题分析
问题场景
部署构建产物后,Jenkins中收到Terser Plugin的警告:
WARNING in Terser Plugin: Non-strict equality against boolean: == false [./node_modules/jspdf/dist/jspdf.es.min.js:86,67647]
对应压缩代码行:
set:function(t){t=t.toString(),f=this instanceof mt==!1?"("===t.substr(0,1)?T(t.substr(1,t.length-2)):T(t):t}})
未压缩的原始库代码:
set: function set(value) { value = value.toString(); if (this instanceof AcroFormButton === false) { if (value.substr(0, 1) === "(") { _DV = pdfUnescape(value.substr(1, value.length - 2)); } else { _DV = pdfUnescape(value); } } else { _DV = value; } }
问题原因
这个警告并非你修改库代码导致,而是jspdf官方预构建的压缩包本身存在的问题:
官方在打包jspdf时,Terser的优化规则将原始代码里的严格相等判断=== false转换为了== !1(!1等价于false),而你的项目构建流程中启用了Terser对「非严格相等布尔值」的检查规则,因此触发了警告。
解决方案
- 忽略特定库的警告:在项目的Terser配置中排除jspdf相关文件的检查。以webpack配置为例:
module.exports = { optimization: { minimizer: [ new TerserPlugin({ terserOptions: { compress: { warnings: true, }, }, exclude: /jspdf\.es\.min\.js$/ }) ] } } - 自行构建未压缩版本:安装jspdf的源码包,在项目中统一配置Terser压缩规则,避免这种非严格相等的转换。
- 反馈官方修复:向jspdf仓库提交issue,说明预构建包存在的Terser警告问题,等待官方调整打包配置。
内容的提问来源于stack exchange,提问作者paulalexandru
相关产品推荐
相关产品推荐

