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

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

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

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

解决方法:

基于此博客文章https://blogs.oracle.com/sundararajan/remote-debugging-of-nashorn-scripts-with-netbeans-ide-using-debugger-statements,您可以附加一个远程java调试器来处理.

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

附加后,使用JavaScript命令:

debugger;

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

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

上一篇:为Nashorn脚本引擎定义默认/全局Java对象?


下一篇:犀牛.绑定本机Java对象?