2017-11-13 5 views
5

Ich habe schon lange Probleme damit, meine Quellkarten in meiner App zu verwenden. Ich habe in der Webpack-KonfigurationWebpack AngularJS Quellmaps Ausgabe

devtool: 'source-map', 

gesetzt, aber sie sind immer noch nicht in den Chrome Devtools verfügbar.

enter image description here

Ich schob eine wirklich einfache Anwendung meines FE Stapel der Hoffnung, jemand mit dem Problem identifizieren konnte, ob es mit webpack ist, eckig, oder eine andere Bibliothek. https://github.com/coreysnyder/Angular-Webpack3-Seed

Hier sind die Versionen Ich renne:

{ 
    CoreyApp: '1.0.0', 
    npm: '4.4.4', 
    ares: '1.10.1-DEV', 
    http_parser: '2.7.0', 
    icu: '57.1', 
    modules: '48', 
    node: '6.9.0', 
    openssl: '1.0.2j', 
    uv: '1.9.1', 
    v8: '5.1.281.84', 
    zlib: '1.2.8' 
} 
OSX 10.12.6 
+0

Wenn ich 'start-native' Port in etwas wie 8080 ändere (weil es sonst nicht auf meinem PC starten kann) und run' npm install' und 'npm start-native laufen lassen, funktioniert alles gut https: //i.stack .imgur.com/fkfXN.png und ich kann Quelle in den Chrom-Devtools sehen – varren

+0

Also, wenn Sie einen Debugger in den Controller view1.js werfen, sehen Sie den Breakpoint in der view1.js in Chrome Devtools angezeigt? Ich habe keine Probleme, den Code in der Konsole zu finden, sondern ihn auf dem Controller anzuzeigen. – Corey

+0

Können Sie es mit der Option "devtool: 'cheap-module-source-map" versuchen? – cinnaroll45

Antwort

0

ich Ihre Quelle Karten für JS-Dateien beheben könnte, indem die babel-loader hinzufügen. Um dies zu tun, müssen Sie babel-Loader installieren:

npm i -D [email protected] @babel/core @babel/preset-env 

und dann erweitern Regel für Js

rules: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     use: [ 
      { 
      loader: 'ng-annotate-loader', 
      options: { add: true, single_quotes: true } 
      }, 
      { 
      loader: 'babel-loader', 
      options: { 
       presets: ['@babel/preset-env'] 
      } 
      } 
     ] 
     }, [...] 
] 

bereit, weitere Details zu babel-loader github repo

+0

Wenn ich das nutze, sah ich keine Änderungen. Das Konsolenprotokoll "View 1 Ctrl" wird weiterhin als "app.js: 19" anstelle von "view1.js: 23" angezeigt. – Corey

+0

Wht console log? Habe ich etwas verpasst? – scipper

+0

https://github.com/coreysnyder/Angular-Webpack3-Seed/blob/master/app/views/view1/view1.js#L23 – Corey

0

Sie werden wahrscheinlich die Einrichtung Quelle haben Karte für verschiedene Lader individuell.

Für 'ng-annotate-loader' (Docs)

use: [{ 
    loader: 'ng-annotate-loader', 
    options: { 
     add: true, 
     single_quotes: true , 
     map: { inline: true, inFile: 'app.js', sourceRoot: __dirname + '/app' }} 
}] 

Für less können Sie documentation Option wie @ahmedelgabri verwenden

vorgeschlagen
use: [{ 
    loader: "style-loader" 
}, { 
    loader: "css-loader", options: { 
     sourceMap: true 
    } 
}, { 
    loader: "less-loader", options: { 
     sourceMap: true 
    } 
}] 

Alte Post vor OP Github Änderungen.

Andere Option ist devtoolLineToLine: true in Ihrem output hinzuzufügen, wenn Sie devtool: 'source-map' verwenden möchten. Aber devtoolLineToLine ist veraltet, also erwägen Sie, devtool zu etwas anderem zu ändern.devtool: 'source-map' demo image

output: isTest ? {} : { 
    devtoolLineToLine: true, // <= this line 

    sourceMapFilename: '[name].map', 
    path: __dirname + '/dist', 
    filename: '[name].bundle.js', 
    publicPath: publicPath 
}, 

Alternativ können Sie devtool: 'eval' oder eine Variation von eval verwenden, wie cheap-module-eval-source-map (ähnliches Verhalten, jedoch ohne Dateinamen) also works fine for me

+0

Näher, aber immer noch nicht funktioniert. Ich sehe "View 1 Ctrl" auf "view1.js?: 19" statt Zeile 23. Außerdem kann ich keinen Breakpoint in meiner "doThing" -Funktion in Zeile 27 der gleichen Datei setzen. Sind meine Erwartungen an Quellkarten nicht erfüllt oder funktionieren sie nicht richtig? – Corey

+0

@Corey verwenden Sie 'babel-loader' von @scipper answer? Weil ich die gleichen Probleme mit falschen Zeilennummern hatte. Wahrscheinlich kann ich einen Rat von [hier] (https: // github.com/babel/babel-loader/issues/207) oder in meinem Fall habe ich einfach nicht 'loader: 'babel-loader'' Teil und verwenden Sie Ihren ursprünglichen Quellcode – varren

+0

@Corey wenn das der Fall ist, denke ich, die einfachste Lösung wäre retainLines zu verwenden: true Option '{ loader: 'babel-loader', Optionen: { Voreinstellungen: [ '@ babel/Preset-env'], retainLines: true } }' – varren

0

Es gibt nichts mit dem Webpack Config falsch ist hier https://github.com/coreysnyder/Angular-Webpack3-Seed

Hier ist ein gif mit Ihrem Code & Setzen eines Haltepunktes in view1 Datei

enter image description here

Und hier ist, warum der Text

enter image description here

blau ist und ich kann die Quelle ganz gut

enter image description here

Das Hauptproblem sehen, ist die less-loader Sie brauchen um die Quellkartenoptionen für beide zu übergeben, die less-loader & css-loadercheck the readme

{ 
    test: /\.less$/, 
    use: [ 
     { 
     loader: 'style-loader', 
     }, 
     { 
     loader: 'css-loader', 
     options: { 
      sourceMap: true, 
     }, 
     }, 
     { 
     loader: 'less-loader', 
     options: { 
      sourceMap: true, 
     }, 
     }, 
    ], 
    }, 

Nach Dadurch können Sie aus dem Bedienfeld Stile debuggen wie diese

enter image description here

Wenn Sie direkt die .less Dateien in der Readme erwähnt einen Blog-Post bearbeiten möchten, dass kann mit diesem helfen

Ich hoffe, dass dies Ihre Frage beantwortet

+0

Sie setzen die breakpoint in view.html was eine generierte Datei von webpack ist. Ich versuche, Haltepunkte in der Quelle über Quellkarten zu setzen. Das Einfügen von Haltepunkten in den generierten Dateien ist nicht hilfreich, da die Steuerungslogik nicht Zeile für Zeile unterbrochen wird. – Corey

+0

Wenn Sie sehen, wo der Text blau ist, sehen Sie wieder den kompilierten Code, nicht die Quelle. Der einzige Teil, der scheinbar funktioniert, ist, dass Sie den stackOverflow-Dienst in einem nicht kompilierten Zustand sehen können. Das versuche ich auch für die View-Controller zu erreichen, was nicht passiert. – Corey