Неопределенная константа Typescript во время сеанса отладки - PullRequest
0 голосов
/ 22 января 2020

У меня есть следующее Node.js с Typescript project , которое работает абсолютно нормально. Однако во время сеанса отладки я заметил, что экспортированные константы из другого файла Typescript всегда undefined:

enter image description here

Я подозреваю, что это связано с пустой массив names в сгенерированных исходных картах :

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

Есть ли способ сгенерировать правильную исходную карту из компилятора Typescript или, возможно, другого решения решить эту проблему отладки? Ниже приведены мои 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/**/*"
  ]
}

Я использую Typescript 3.7.5.

Проект был просто запущен через Webdeorm Node runner:

enter image description here

Примечание : эта проблема не возникала при отладке приложения Angular, которое запускается через ng serve. Не уверен, что ng serve отличается от стандартного tsc.

1 Ответ

2 голосов
/ 22 января 2020

Да, пустое "names": [] в исходных картах является проблемой - tsc компилирует ваш именованный импорт в category_1.ANIMAL_TYPE, и нет сопоставлений имен, поэтому переменная не определена в отладчике ... Вы столкнетесь с тем же проблема при отладке в VSCode, например:

enter image description here

Вы можете проверить объект category_1, чтобы увидеть значения:

enter image description here

Я не знаю ни одного способа изменить поведение tsc :(

...