Gibt es Quellkartenunterstützung für Typescript in Node/Nodemon?
Lesezeit: 4 Minuten
k0pernikus
Ich habe ein Knotenprojekt, das in Typescript@2 geschrieben ist.
Meine tsconfig hat sourceMap einstellen true und das *.map.js Dateien werden generiert. Wenn ich meine Transpilierung ausführe *.js JavaScript-Dateien über node oder nodemonich sehe nur die Fehlermeldungen relativ zu js Datei und nicht auf die zugeordneten TypeScript-Dateien; Ich gehe davon aus, dass es völlig ignoriert wird.
Ist sourceMap Support nur für Browser-Unterstützung gedacht? Oder kann ich es zusammen mit node oder nodemon verwenden? Wenn letzteres der Fall ist, wie würde ich es aktivieren?
Ich möchte Laufzeitfehler sehen, die in einer ausgeführten Javascript-Datei im Vergleich zur ursprünglichen TypeScript-Datei erkannt wurden.
Stephen Paul
🚩 Für Node-Versionen seit v12.12 gibt es eine einfachere und bessere Lösung.
Ich habe dies kürzlich in meiner Express-App zum Laufen gebracht. Schritte wie folgt:
Installieren Sie die erforderliche Bibliothek:
npm install --save-dev source-map-support
An Ihrem Einstiegspunkt (z app.ts):
require('source-map-support').install();
In deinem app.tsbenötigen Sie möglicherweise auch eine bessere Protokollierung für Fehler innerhalb von Versprechen:
process.on('unhandledRejection', console.log);
In deinem tsconfigunter compilerOptions:
"inlineSourceMap": true
Die Compileroptionen inlineSourceMap und sourceMap schließen sich gegenseitig aus
– david.barkhuizen
16. Januar 2019 um 14:41 Uhr
Wenn Sie die CLI-Nutzung zu Ihrer Antwort hinzufügen (wie ich in meiner eigenen Antwort dargelegt habe), akzeptiere ich Ihre und lösche meine eigene. (stackoverflow.com/a/58455205/457268)
– k0pernikus
18. Okt. 2019 um 17:01 Uhr
@k0pernikus danke. Entschuldigung, ich bin mir nicht 100 % sicher, ob ich das verstehe. Fühlen Sie sich frei, meine Antwort zu bearbeiten, um zu zeigen, was Sie meinen.
– Stephen Paul
18. Okt. 2019 um 17:29 Uhr
Gibt es eine Möglichkeit, dies nativ zu tun, ohne ein Paket aufzublähen? source-map-support?
– Tiago
21. Januar 2021 um 8:53
Ab Knoten v12 können Sie das Flag verwenden --enable-source-maps
– Richard
21. Januar 2022 um 15:46 Uhr
Die Antworten hier gelten für frühere Node-Versionen v12.12.0das das (experimentelle) hinzufügte --enable-source-maps Flagge. Wenn diese Option aktiviert ist, werden Quellzuordnungen ohne zusätzliche Abhängigkeit auf Stack-Traces angewendet. Wie gezeigt in Dieser Artikelhat es das etwas andere und möglicherweise vorteilhafte Verhalten, sowohl den Speicherort der generierten .js-Datei als auch den Speicherort der Quelldatei einzubeziehen. Zum Beispiel:
Error: not found
at Object.<anonymous> (/Users/bencoe/oss/source-map-testing/test.js:29:7)
-> /Users/bencoe/oss/source-map-testing/test.ts:13:7
NODE_OPTIONS=--enable-source-maps npm test ist der Befehl, nach dem ich gesucht habe
– Boris Werchowski
9. März 2022 um 5:46
Ich habe herausgefunden, dass dies nicht funktioniert hat, wenn ich es nicht eingegeben habe --enable-source-maps VOR dem Pfad zur Skriptdatei. Möglicherweise ist dies bei Node-Befehlszeilenschaltern normal. Ich bin mir nicht sicher.
– Clonkex
12. April 2022 um 4:49
Hinweis: Es gibt Beschwerden über --enable-source-maps Anfragen verlangsamen (siehe github.com/nodejs/node/issues/41541). Möglicherweise ist noch ein wenig Polieren erforderlich, bevor wir es in der Produktion verwenden können.
– vamsiampolu
14. Juni 2022 um 4:38
k0pernikus
Installieren Sie die Quellkartenunterstützung:
npm install source-map-support
(Ich bin auch in der Produktion dabei, da es immens hilft, Fehler aus den Protokollen zu finden, wenn ein Fehler auftritt. Ich habe keine großen Auswirkungen auf die Leistung festgestellt, aber Ihre Erfahrung kann anders sein.)
Zu Ihrem hinzufügen tsconfig.json:
{
"compilerOptions": {
"sourceMap": true
}
}
Fügen Sie beim Ausführen Ihrer JavaScript-Datei den erforderlichen Parameter hinzu:
Alternativ fügen Sie in Ihrem Eintragsaufruf Folgendes hinzu:
require('source-map-support').install()
Dennoch finde ich, dass dies bei Projekten mit mehreren Einstiegspunkten mühsam ist.
Randnotiz: Mokka unterstützt auch die --require / -r Option, um die Sourcemap-Unterstützung in Mocha zu haben, können Sie damit auch Ihre Tests aufrufen, z. B. ähnlich wie:
laufen npm install source-map-support --save im Stammverzeichnis Ihres Knotenprojekts und fügen Sie hinzu import 'source-map-support/register' zu Ihrer main.ts- oder index.ts-Datei hinzufügen.
Das ist es.
Bruno Grieder
Die Quellkartenunterstützung funktioniert mit Node einwandfrei
Alles, was Sie tun müssen, ist hinzuzufügen
"source-map-support": "0.4.11",
Zu dependencies oder dev-dependencies In package.json durch Laufen
npm install --save source-map-support
Und fügen Sie in Ihrer Einstiegspunkt-TS-Datei einfach oben hinzu
require('source-map-support').install()
(Hinweis: Dies ruft nodeJS auf require – es sind keine Source-Map-Support-Definitionsdateien erforderlich)
Gibt es Nachteile bei der Verwendung in der Produktion? (serverseitig)
– Sev
6. November 2017 um 21:36 Uhr
@Sev Soweit wir wissen, nicht (wir verwenden es in der Produktion)
– Bruno Grieder
7. November 2017 um 8:24
Astra-Bär
Für Node-Versionen ab v12.12.0 Verwenden Sie das Flag –enable-source-maps, wenn Sie node ausführen.
Beispiel: node –enable-source-maps main.js
Installieren Sie „source-map-support“ nicht für Node-Versionen ab v12.12.0
Gibt es Nachteile bei der Verwendung in der Produktion? (serverseitig)
– Sev
6. November 2017 um 21:36 Uhr
@Sev Soweit wir wissen, nicht (wir verwenden es in der Produktion)
– Bruno Grieder
7. November 2017 um 8:24
14528000cookie-checkGibt es Quellkartenunterstützung für Typescript in Node/Nodemon?yes