gpt4 book ai didi

Java ScriptEngine 找不到 Javascript 文件引用的模块

转载 作者:行者123 更新时间:2023-12-03 10:03:09 25 4
gpt4 key购买 nike

我正在使用 Java 7,并且我有以下使用 jsondiffpatch 的代码JavaScript 库:

logger.debug("CURRENT PATH=" + Paths.get("").toAbsolutePath());
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
reader = new FileReader("webclient/common/js/jsondiffpatch.min.js");
engine.eval(reader);

如果你看 jsondiffpatch.js 的第 48 行( jsondiffpatch.min.js 的未压缩版本),您可以看到它引用了另一个模块:

var packageInfoModuleName = '../package.json';

执行Java代码时,engine.eval(reader)线路找不到 package.json并抛出以下异常:

javax.script.ScriptException: Error: Cannot find module '../package.json' in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224) ~[na:1.7.0_51]
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249) ~[na:1.7.0_51]
at nms.server.domain.AuditManager$ConfigAuditProcessor.run(AuditManager.java:465) ~[nms.jar:na]
Caused by: sun.org.mozilla.javascript.internal.JavaScriptException: Error: Cannot find module '../package.json' (<Unknown source>#1)
at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1066) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:162) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(ContextFactory.java:430) ~[na:1.7.0_51]
at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116) ~[na:1.7.0_51]
at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(ScriptRuntime.java:3160) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.InterpretedFunction.exec(InterpretedFunction.java:173) ~[na:1.7.0_51]
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1169) ~[na:1.7.0_51]
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214) ~[na:1.7.0_51]

jsondiffpatch.min.js文件位于 webclient/common/js目录,以及package.json文件位于 webclient/common目录。

logger.debug该行打印出当前工作目录的以下内容:

 CURRENT PATH=/usr/local/project/version/Software

所以我尝试复制 package.json文件到/usr/local/project/version目录,我仍然遇到相同的异常。

为什么ScriptEngine找不到package.json文件?

最佳答案

/public/build 中的 jsondiffpatch.js 文件是一个包(使用 browserify 创建),仅用于在浏览器中使用它(其中调用的 require 函数定义在该文件的顶部)文件,它不会从光盘读取文件)。

我不熟悉 Java ScriptEngine,但看起来它不允许重新定义 require 函数。如果它支持 CommonJS,则不应使用捆绑版本,您应该需要 ./src/main.js (库主模块,如 package.json 中指出的) )

(免责声明:我是 jsondiffpatch 作者)

关于Java ScriptEngine 找不到 Javascript 文件引用的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30487049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com