2016-10-28 7 views
5

Vor der Verwendung von Webpack, um meine Anwendung zu bündeln, habe ich Module mit IIFEs erstellt und dann auf das Objekt window angefügt, damit ich darauf zugreifen konnte. Dies machte das Debuggen im Chrome-Browser ziemlich einfach, da die Module alle global verfügbar sind und ich sie mit Haltepunkten untersuchen konnte.Wie untersucht man ES6-Module im Chrom-Debugger

Ich bin vor kurzem auf die Verwendung von Webpack um meine Anwendung zu bündeln, die großartig war. Wenn ich jetzt jedoch Haltepunkte einstelle und die importierten Module untersuchen möchte, kann ich dies nicht tun, indem ich auf den Modulnamen verweise. Ich bin mir ziemlich sicher, dass dies daran liegt, dass Webpack die Module unter der Haube in etwas anderes umbenennt.

Hier ist ein Beispiel für die Import-Anweisungen in einer bestimmten Datei (btw, jedes des importierten Module, um ein Objekt zu importieren):

import statements

Und in derselben Datei, wenn ich einen Haltepunkt festgelegt, Ich würde gerne in der Lage sein, den Inhalt der Module wie früher zu überprüfen. Im Bild unten versuche ich auf das Modul CustomHelpers zuzugreifen, das nur eine Sammlung von Hilfsfunktionen ist, die in einem Objekt gespeichert sind.

chrome console with breakpoint

Irgendwelche Gedanken darüber, wie ich diese importierten Module beim Debuggen in der Chrome-Konsole verweisen kann?

Um zu klären, meine webpack.config.js funktioniert und ich habe sourcemaps aktiviert, weshalb ich die Original-Datei anstelle der verstümmelte bundle.js Dateien zu sehen bin. Insbesondere versuche ich nur die Module, die ich importierte, zu sehen und ihren Inhalt zu sehen.

+0

Verwenden Sie reduzierte Bündel? Ich weiß, dass Chrome-Haltepunkte auf Quellkarten nicht optimal funktionieren, wenn die generierten Skripts minimiert werden. Selbst wenn sie nicht sind, ist es Hit und Miss. Sie sind normalerweise besser dran, wenn Sie Debugger-Anweisungen in Ihre Quelle einfügen, da sie den gleichen Effekt haben! – Ambroos

Antwort

1

in webpack.config.js:

  • Set Debug-Flag auf true
  • zeigen eine DevTool

wie folgt aus:

module.exports = { 
entry: "./index.js", //"./tryfirst/tree.js", // 
output: { 
    path: __dirname, 
    filename: "bundle.js" 
}, 
debug: true, 
devtool: 'cheap-module-eval-source-map', 
module: { 
    loaders: [ 
    ... 

Wenn Sie Ausgangs verwendet werden Babel von der Kommandozeile aus, können Sie die gleichen Optionen auf der Kommandozeile wie folgt einstellen:

babel src -d lib --presets es2015 --sourceMaps inline; webpack --devtool eval-source-map 

Die selbe Zeile kann zu package.json als Skript hinzugefügt werden. Genau so etwas zu dem „scripts“ Abschnitt hinzufügen:

"scripts": { 
    ..., 
    "test": "babel src -d lib --presets es2015 --sourceMaps inline; webpack --devtool eval-source-map" 
}, 

Dann können Sie es leicht von Commandline starten, ohne in Gedanken die Optionen und Fahnen alle zu halten zu haben:

npm run test 

-Code in den Skripten funktioniert genau (zum größten Teil zumindest) wie das, was Sie auf Ihrer Konsole eingeben. npm run test (oder was auch immer Sie das Skript nennen) ist die Verknüpfung, die Sie von nun an verwenden können.

Wenn es immer noch nicht an Haltepunkten stoppt, versuchen Sie den Befehl "debugger;" am gewünschten Haltepunkt in Ihrem tatsächlichen Javascript-Code. Sieht komisch aus, macht aber meistens den Trick. Chrome findet sie und setzt dort Haltepunkte für Sie.

+0

Hm, ich glaube, Sie missverstehen meine Frage - ich habe meine webpack.config.js funktioniert und ich habe Quellkarten aktiviert, weshalb die Zuordnung zurück zu der ursprünglichen Datei anstelle der verstümmelten bundle.js-Datei. Wenn ich jedoch Haltepunkte in der Quellkarte festlege und den Inhalt der importierten MODULE gezielt überprüfen möchte, kann ich sie dort nicht sehen. – wmock

+1

Hi @wmock, ich glaube ich habe deine Frage verstanden, aber es funktioniert bei mir mit dieser Konfiguration - auch mit Breakpoints die in einem node_module gesetzt sind. Habe gerade versucht herauszufinden, ob 'code'exclude:/node_modules /' code 'in der babel-loader-Konfiguration einen Unterschied macht, aber in meinem Fall ist es gesetzt und es funktioniert trotzdem. Auf der anderen Seite machen auftretende Fehler (und das ist normalerweise, wenn Sie das Debuggen benötigen) manchmal dazu, dass ansonsten funktionierende Quellkarten plötzlich in Rauch aufgehen, aber das ist nicht auf Moduldateien beschränkt. – achimbode

+0

Danke für das Follow-up - ich frage mich, ob es ist, weil ich die "debug: true" -Konfiguration in meiner 'webpack.config.js' Datei fehlt, weil alles andere in Ihrer Konfiguration ist, was ich auch in meinem habe. – wmock

Verwandte Themen