typescript - IE11 Angular-CLI kildekart fungerer ikke
Ved bruk av Angular-CLI 1.0 og Angular 4, klarer jeg ikke å få kildekart (source maps) til å fungere til tross for at jeg har //# sourceMappingURL=main.bundle.js.map i den bundlede JavaScript-filen. Vet noen om en løsning for å få kildekartene til å fungere i IE-11? Normalt sett ville ikke dette vært et stort problem, jeg ville bare byttet til Firefox eller Chrome. Men jeg utvikler et Excel-tillegg med Office-js API, og det bruker en innebygd IE11-nettleser for å vise tillegget, så jeg er sittende fast med det.
Min tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"pretty": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
tsconfig.app.json:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"baseUrl": "",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}
Svar #1
Problemet var at det var flere //#sourceMappingURL-kommentarer i de sammenslåtte filene. For å fikse dette, kan du bruke source-map-loader for Webpack for å hente ut disse kommentarene og gi dem til webpack devtool for å lage en hoved-source-map-fil. Denne linken plasseres deretter på slutten av bunten. Nå er det bare én //#sourceMappingURL-kommentar i filen, slik IE11 forventer, og alt fungerer glimrende.
Slik gjorde jeg det:
- Jeg har ejet fra Angular-CLI Advarsel, dette kaster deg ut av Angular-CLI, noe som gjør deg ansvarlig for å håndtere din egen webpack-konfigurasjon, blant andre ting. Dette er irreversibelt.
ng eject npm install source-map-loader- Jeg redigerte webpack-konfigurasjonen min for å legge til dette:
{
//...
devtool: 'inline-source-map',
module: {
rules: [
//...
{
test: /\.js$/,
use: ["source-map-loader"],
exclude: [/node_modules/],
enforce: "post"
}
]
}
}
Med denne oppsettet kan jeg bruke brytepunkter i F12-verktøyene ved å bruke sourcemaps.
Hvis du vil gå ett skritt videre og forbedre stacktraces (som Chrome gjør), kan du bruke stacktrace.js for å lage frames og oversette dem med sourcemaps. Dette var litt tungvint, og løsningen er for lang til å legge ut her
