2016-07-21 30 views
4

Ich lade und leite JavaScript-Code dynamisch, der auf der Festplatte in einer YAML-Datei gespeichert ist. Ich würde gerne wissen, ob es möglich ist (mit intelliJ) den JS-Code zu debuggen, obwohl ich es nicht aus einer eigenständigen JS-Datei lade. Um das Problem Beschreibung zu vereinfachen, sollten Sie die folgenden Java-Code:Debuggen von dynamisch geladenem JavaScript-Code mit IntelliJ und der Nashorn-Engine

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

Wie stelle ich einen Haltepunkt in Zeile zwei (der „print“ Funktionsaufruf) und wie untersuche ich den Wert der Variablen „a“? Wenn dies nicht möglich ist, was wäre die beste Problemumgehung?

Antwort

2

Basierend auf diesem Blogpost https://blogs.oracle.com/sundararajan/remote-debugging-of-nashorn-scripts-with-netbeans-ide-using-debugger-statements können Sie einfach einen Remote-Java-Debugger anhängen, um zu verarbeiten.

Sie können dies in IntelliJ IDEA tun, indem Sie eine neue Remote-Run-Konfiguration erstellen.

Nach dem Anbringen, verwenden Sie die JavaScript-Befehl:

debugger; 

Dieser den Debugger zwingen wird, zu brechen, wenn es angebracht ist. Sie können dann die Werte von Variablen innerhalb des Variablenfensters überprüfen.

Wenn Sie es nicht schaffen, IntelliJ anzuhängen, öffnen Sie den Browser-Inspektor/Debugger und die gleiche Zeile von Javascript wird dazu führen, dass der Debugger des Browsers in dieser Zeile bricht.

+1

upvoted, aber ich dachte ein wenig länger ... Wie verbinden Sie sich mit der NashornScriptEngine? Tut IntelliJ es? –