typescript - Hur får jag VSCode att ladda källkartor för NPM-beroenden?
Jag har ett beroende som är skrivet i TypeScript. Beroendet inkluderar källkartor och originalkällan i NPM-paketet. Om jag sätter en brytpunkt i min kod och sedan steg för steg går in i beroendet, går det korrekt in i TypeScript istället för den kompilerade JavaScripten. Men om jag sätter en brytpunkt i TypeScript-koden och sedan startar min app, säger VSCode
Brytpunkt ignorerad eftersom genererad kod inte hittades (problem med källkarta?).
Om jag sätter en brytpunkt efter att ha gått in i beroendet fungerar allt.
Jag tror att problemet här är att sourcemaps är en envägsprocess, så när jag har en brytpunkt i en TypeScript-källfil, vet den inte var det är i JavaScript (vilket krävs för att faktiskt sätta brytpunkten via node-debugger). När JavaScript-filen väl är öppen kan VSCode matcha de två och nu fungerar brytpunkterna.
Så frågan är, hur kan jag göra så att mina TS-brytpunkter fungerar från start, utan att jag först måste stega in i filen? Beroendet är många filer och att behöva återställa mina brytpunkter varje körning är problematiskt, särskilt eftersom det specifika problemet jag felsöker leder till timeout vid socketanslutningar om jag tar för lång tid (mer än ett par sekunder).
Det jag vill ha är ett sätt att säga till TypeScript: "tolka dessa JavaScript-filer när debuggningsverktyget startas och synkronisera källkartsfilerna så att brytpunkterna matchar korrekt".
Jag vet att den allmänna funktionaliteten är tillgänglig eftersom jag kan felsöka beroendet självt framgångsrikt (jag är underhållare av beroendet) via brytpunkter i TypeScript-filer. Det verkar bara som att viss information går förlorad när det laddas som ett NPM-modul.
Svar #1
Detta är exakt vad outFiles-attributet i launch.json-filen är till för - sätt det till ett glob-mönster som inkluderar JavaScript-filerna i nodmodulen (och din egen kod). Debug-adaptern kommer att titta på dessa filer för sourcemap-referenser, så att den kan lösa brytpunkter i TS-filerna omedelbart.
Exempel:
"outFiles": [ "${workspaceRoot}/myOutFiles/**/*.js", "${workspaceRoot}/node_modules/**/*.js" ]Om du bara känner till ett urval av nodmoduler som inkluderar sourcemaps kan du förbättra prestandan på detta sätt:
"outFiles": [ "${workspaceRoot}/node_modules/{module_a,module_b}/**/*.js" ]Från detta ärende: https://github.com/Microsoft/vscode-node-debug/issues/82#issuecomment-290642560