Имеется спорадиальная c проблема, с которой я сталкиваюсь при выполнении ниже javascript из моего Java Приложения
TypeError: Невозможно прочитать свойство "score" из undefined в строке № 1
{
if (typeof contextVar.queryFreeTechs != 'undefined' || contextVar.queryFreeTechs != '') {
var sortable = [];
var high;
for (var value in contextVar.queryFreeTechs) {
var obj = { userId: contextVar.queryFreeTechs[value].userId, score: contextVar.queryFreeTechs[value].score }; sortable.push(obj)
}
sortable.sort(function (a, b) { return b.score - a.score });
var newJsonData = {};
high = sortable[0].score;
sortable.forEach(function (element) {
if (element.score === high) { newJsonData[element.userId] = 100 }
else { newJsonData[element.userId] = Math.ceil((element.score) / high * 100) }
}); contextVar.utilisationScoreData = newJsonData
}
}
Ниже приведен мой java код
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("nashorn");
Object retObj = engine.eval(rule.getScript(), bindings);
полная трассировка стека
javax.script.ScriptException: TypeError: Cannot read property "score" from undefined in <eval> at line number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
at com.abc.rule.system.RunnableScript.executeScript(RunnableScript.java:162)
не удалось выяснить, это проблема с javascript или с мое приложение. Любая помощь будет полезна.