JMeter JSR223预处理器运行crypto-js报错求助
问题排查:JMeter JSR223预处理器中Crypto-JS语法错误
问题现象
在JMeter的JSR223预处理器中加载Crypto-JS文件后运行,触发语法错误,核心报错信息如下:
javax.script.ScriptException: SyntaxError: crypto-js.js:1424:48 Expected , but found =
stringify: function (wordArray, urlSafe=true) {
^ inat line number 1
原因分析
报错位置的urlSafe=true是ES6(ECMAScript 2015)新增的函数默认参数语法,而当前环境中JMeter 5.5搭配的Java 8内置Nashorn脚本引擎仅支持ES5标准,无法识别该ES6语法,导致解析失败。
解决方案
方案1:使用ES5兼容的Crypto-JS版本
- 选用Crypto-JS 3.x系列版本(如3.3.0),该版本基于ES5语法开发,可直接被Nashorn引擎解析
- 替换当前使用的Crypto-JS文件为对应版本即可
方案2:修改Crypto-JS源码适配ES5
找到报错的stringify函数定义,将ES6默认参数写法改为ES5兼容形式:
原代码片段:
stringify: function (wordArray, urlSafe=true) {
修改后:
stringify: function (wordArray, urlSafe) { urlSafe = typeof urlSafe !== 'undefined' ? urlSafe : true; // 原函数其余逻辑保持不变
方案3:升级Java并切换脚本引擎
- 升级Java版本至11及以上,JMeter 5.4+支持GraalVM JavaScript引擎(完全兼容ES6+语法)
- 在JMeter安装目录下的
jmeter.properties文件中添加配置:jsr223.engine=graal.js,重启JMeter后即可使用新版引擎运行ES6语法的Crypto-JS
内容的提问来源于stack exchange,提问作者jordan99
相关产品推荐
相关产品推荐

