node.js - Typescript odefinierad konstant under felsökningssession


Jag har följande Node.js-projekt med Typescript som fungerar helt utan problem. Men under en felsökningssession märkte jag att exporterade konstanter från en annan Typescript-fil alltid är undefined:

Jag misstänker lite att detta beror på den tomma names-arrayen i de genererade source maps:

{
  "version": 3,
  "file": "main.js",
  "sourceRoot": "",
  "sources": [
    "../src/main.ts"
  ],
  "names": [], // <---- empty
  "mappings": ...details omitted... 
}

Finns det ett sätt att generera en korrekt source map från en Typescript-kompilator eller kanske en annan lösning för att lösa detta felsökningsproblem? Nedan är min tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true, 
    "target": "es2017",
    "noImplicitAny": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "sourceMap": true,
    "allowJs": true,
    "outDir": "dist",
    "baseUrl": ".",
    "typeRoots": [
      "./node_modules/@types"
    ],
    "types": [
      "node" 
    ],
    "paths": {
      "*": [
        "node_modules/*"
      ]
    }
  },
  "include": [
    "src/**/*"
  ]
}

Jag använder Typescript 3.7.5.

Projektet kördes helt enkelt genom Webstorms Node-runner:

Sidnotering: Detta problem uppstod inte när jag felsökte en Angular-applikation som körs genom ng serve. Osäker på vad ng serve gör annorlunda än standard tsc.

Svar #1

Ja, det tomma "names": [] i sourcemaps är problemet - tsc kompilerar din namngivna import till category_1.ANIMAL_TYPE, och det finns inga namn-mappningar, så variabeln är undefined i debuggern... Du kommer att stöta på samma problem när du debuggar i VSCode, till exempel:

Du kan inspektera category_1-objektet för att se värdena:

Jag är inte medveten om något sätt att ändra tsc-beteende :(

Relaterade artiklar