Отладчик не останавливается на точках останова производственного кода - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть nodejs модуль, который я тестирую модулем с помощью jasmine-ts [0.3.0], запустив jasmine-ts --config=spec/support/jasmine.json.

Я хочу запустить какой-то модульный тест и остановиться на точке останова, которая находится внутри функции, которую я тестирую. К сожалению, отладчик останавливается только внутри модульных тестов, но не в рабочем коде.

В чем может быть проблема?

Больше информации о моих попытках.

  1. Перекомпиляция машинописи при изменениях включена в моем Intellij IDEA 2020.1. Я могу распознать, что он работает правильно, так как, когда я изменяю какой-нибудь текстовый файл в рабочем коде, я вижу изменения в соответствующем Javascript файле в папке dist.
  2. Если я запустил свой модуль, то смогу остановить и на точках останова.
  3. Странно то, что я могу останавливаться на точке останова в производственном коде, выполняя модульные тесты в другом модуле, где используется mocha и выполняется так: npx mocha -r ts-node/register test/**/*.test.ts.

Мысли о том, что может быть не так.

  1. Зависимости могут работать неправильно вместе. Недавно я обновлял библиотеки до последней версии, но заметил, что для jasmine-ts требуется ts-node меньше 8, поэтому в настоящее время в моем пакете следующие версии. json:

    "devDependencies": {
        "jasmine": "3.3.1",
        "jasmine-ts": "^0.3.0",
        "ts-node": "7.0.1",
        "nyc": "^13.0.1",
        "typescript": "^3.8.3",
        "@types/jasmine": "^3.3.8",
        "jasmine-spec-reporter": "^4.2.0",
        "jasmine-reporters": "^2.3.2"
    }
    
  2. Возможно, исходное сопоставление нарушено. Я проверил некоторые *.js.map файлы, и кажется, что они указывают на правильные *.ts файлы, поэтому не знаю, что там еще проверить.

  3. Я думал, если Конфигурация машинописного текста также может повлиять, но мне непонятно, как именно. В любом случае, это мой tsconfig. json:

    {
    "compilerOptions": {
        "strict": false,
        "target": "es2015",
        "sourceMap": true,
        "module": "commonjs",
        "outDir": "./dist",
        "moduleResolution": "node"
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "./spec/**/*.ts",
        "./node_modules/**/*.ts"
    ]
    }
    
  4. Что-то определенно не так. Когда я хочу увидеть покрытие, которое я запускаю с помощью теста ny c npm, я вижу Javascript файлы, однако это должен быть Typescript. Но я предполагаю, что это может быть другая проблема, но, возможно, нет ...

Любые подсказки, чтобы решить проблему?:)

Обновление:

Одним из способов решения этой проблемы является очистка кода из Intellij IDEA и других файлов, которые могут повлиять на стабильную работу, путем полного удаления проекта с компьютера и повторного его клонирования. Этим действием это помогло мне остановиться на точках останова в других модулях, использующих jasmine, однако мой модуль все еще находится в странном состоянии, так как в какой-то момент я пришел к производственному коду, но не по порядку. Я предполагаю, что вижу некоторые ошибки в отношении обещаний, но я не вижу.

1 Ответ

0 голосов
/ 04 мая 2020

Проблема заключалась в том, что у меня была Перекомпилировать при изменениях флажок на в Language & Frameworks -> Typescript .

Это приносит функциональность, что для каждого файла .ts будет создан файл .js, но в моем случае все js скомпилированные файлы должны находиться в каталоге dist, который я указал в файле tsconfig. Мое предположение состоит в том, что во время сеанса отладки отладчик не знал, какой файл взять, или брал неправильный. Настройка Перекомпилировать с изменениями в выкл решила проблему.

Даже если у меня все еще странное поведение, поскольку отладчик приходит к рабочему коду раньше, чем ожидалось, я думаю, что это так другая история и связана не с предпочтениями Intellij IDEA, а с асинхронным кодом c с периодическим выполнением задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...