{"record":{"id":"1b37c16d9e2c8d7c","repo":"ssssssss-team/spider-flow","slug":"eval","errorCode":null,"errorMessage":"_eval必须要有一个参数","messagePattern":"_eval必须要有一个参数","errorType":"exception","errorClass":"ScriptException","httpStatus":null,"severity":"error","filePath":"spider-flow-core/src/main/java/org/spiderflow/core/script/ScriptManager.java","lineNumber":102,"sourceCode":"    }\n\n    public static boolean containsFunction(String functionName){\n        try {\n            lock.readLock().lock();\n            return functions.contains(functionName);\n        } finally {\n            lock.readLock().unlock();\n        }\n    }\n\n    public static void validScript(String functionName,String parameters,String script) throws Exception {\n        new ScriptEngineManager().getEngineByName(\"nashorn\").eval(concatScript(functionName,parameters,script));\n    }\n\n    public static Object eval(ExpressionTemplateContext context, String functionName, Object ... args) throws ScriptException, NoSuchMethodException {\n        if(\"_eval\".equals(functionName)){\n            if(args == null || args.length != 1){\n                throw new ScriptException(\"_eval必须要有一个参数\");\n            }else{\n                return ExpressionTemplate.create(args[0].toString()).render(context);\n            }\n        }\n        if(scriptEngine == null){\n            throw new NoSuchMethodException(functionName);\n        }\n        try{\n            lock.readLock().lock();\n            return convertObject(((Invocable) scriptEngine).invokeFunction(functionName, args));\n        } finally{\n            lock.readLock().unlock();\n        }\n    }\n\n    private static Object convertObject(Object object){\n        if(object instanceof ScriptObjectMirror){\n            ScriptObjectMirror mirror = (ScriptObjectMirror) object;","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/ssssssss-team/spider-flow/blob/c799cca99c7d064673dc79e6ef06a08bbc0e292d/spider-flow-core/src/main/java/org/spiderflow/core/script/ScriptManager.java#L84-L120","documentation":"Guard inside ScriptManager.eval: when the expression engine calls the built-in _eval function, exactly one argument (the script text to evaluate) is required. The error fires when args is null or its length differs from 1, i.e. a spider-flow expression invoked _eval with zero or multiple arguments, so the Nashorn script cannot be built.","triggerScenarios":"Thrown at spider-flow-core/src/main/java/org/spiderflow/core/script/ScriptManager.java:102 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass exactly one argument to _eval in the expression, e.g. _eval('return 1+1').","If dynamic argument counts are needed, build the script string first and pass it as a single argument.","Check the flow variable feeding the argument — a missing variable can collapse the argument list to zero arguments."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c799cca99c7d064673dc79e6ef06a08bbc0e292d","analyzedAt":"2026-09-08T13:47:08.225Z","contentChangedAt":"2026-09-08T13:47:08.225Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}