javascript - 使用 IntelliJ 和 Nashorn 引擎调试动态加载的 JavaScript 代码

标签 javascript java intellij-idea nashorn

我正在动态加载和运行以 YAML 文件形式存储在磁盘上的 JavaScript 代码。我想知道是否可以(使用 intelliJ)调试 JS 代码,即使我没有从独立的 JS 文件加载它。为了简化问题描述,请考虑以下 Java 代码:

NashornScriptEngineFactory nashornFactory = new NashornScriptEngineFactory();
ScriptEngine engine = nashornFactory.getScriptEngine();
engine.eval("var a = 1 + 1;\nprint(a);");

如何在第二行(“print”函数调用)设置断点以及如何检查变量“a”的值?如果这不可能,最好的解决方法是什么?

最佳答案

基于这篇博文 https://blogs.oracle.com/sundararajan/remote-debugging-of-nashorn-scripts-with-netbeans-ide-using-debugger-statements ,您只需附加一个远程 Java 调试器即可进行处理。

您可以在 IntelliJ IDEA 中通过创建新的远程运行配置来执行此操作。

附加后,使用 JavaScript 命令:

debugger;

这将强制调试器在附加时中断。然后,您可以在变量窗口中检查变量的值。

如果您无法附加 IntelliJ,请打开浏览器检查器/调试器,同一行 javascript 将导致浏览器的调试器在该行中断。

关于javascript - 使用 IntelliJ 和 Nashorn 引擎调试动态加载的 JavaScript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513138/

相关文章:

javascript - 如何使用 jQuery DataTables 重新创建表

javascript - Angular 隐藏形式

javascript - 类型 'subscribe' 上不存在属性 'Promise'

java - 如何修复此 Oauth 2.0 重定向错误

java - Log4j 禁用 #timestamp 注释

scala - 将 IntelliJ 指向已安装的 Scala

javascript - 在javascript中字符串的特定点插入字符的最佳方法?

java - 是否可以使JavaFX中的ImageView响应?

java - 无法通过 IntelliJ Idea 和 Gradle 使用构建文件夹中生成的类

intellij-idea - 如何让 IntelliJ IDEA 显示模块名称而不是 `__init__.py` ?