Ошибка типа: невозможно прочитать свойство «оценка» из неопределенного в <eval>в номере строки - PullRequest
0 голосов
/ 15 апреля 2020

Имеется спорадиальная 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 или с мое приложение. Любая помощь будет полезна.

...