Не удаётся установить точку останова в типах VS Extension.

Вопрос или проблема

Я склонировал этот репозиторий…
https://github.com/semanticart/minimum-viable-vscode-language-server-extension

Это минимально жизнеспособное расширение языкового сервера VS Code с всем базовым кодом для разработки расширения VS Code.

Когда я пытаюсь установить точку останова в одном из файлов исходного кода .ts или .js, это, похоже, не работает. Как только я пытаюсь отладить код с помощью F5, появляется другое окно, и расширение работает нормально. Метод инициализации срабатывает, но все точки останова серые, и VS показывает сообщение об ошибке, говорящее “Мы не смогли найти соответствующее местоположение исходного кода и не нашли исходника с именем NameOfFile.js.

Я попытался найти решения сам, сначала в Google и опробовал множество предложений, также пытался спросить Chat GPT о возможных причинах проблемы, которые все в порядке.

Мой проект находится в этой папке: C:\dev\LSP\lsp-tal>

Ниже представлена структура проекта: связанные файлы создаются в тех же .js файлах, основной tsconfig.json и tsconfig внутри папки сервера, наконец, конфигурация VS для запуска сеанса отладки.

Если кто-то может предложить какую-либо идею или решение, было бы здорово.

Спасибо заранее

Вот все возможные причины согласно Chat GPT:

1 – Убедитесь, что пути outFiles правильные: Ваш launch.json указывает пути для скомпилированных файлов. Учитывая, что ваши выходные файлы находятся в
C:\dev\LSP\lsp-tal\server\out, обновите шаблон outFiles в вашем
launch.json на:

json

“outFiles”: [ “${workspaceRoot}/server/out//*.js”,
“${workspaceRoot}/client/out/
/*.js” ]

Это обеспечивает включение любых подкаталогов в out.

2 – Проверьте генерацию карт источников: Убедитесь, что компилятор TypeScript правильно генерирует карты источников. Вы упомянули, что выходные .js
файлы генерируются в server/out. Убедитесь, что .js.map файлы
генерируются вместе с ними. В противном случае отладчик не сможет сопоставить
исходники TypeScript.

3 – Отрегулируйте параметры sourceMap в tsconfig.json: Убедитесь, что опция sourceMap в tsconfig.json установлена на true (что так, но просто
проверьте еще раз).

4 – Проверьте пути файлов в картах источников: Иногда пути в
сгенерированных картах источников могут быть неправильными. Откройте один из файлов .js.map
и проверьте, что источники указывают на правильное местоположение
(например, ../src/parser.ts или аналогичное). Если это неправильно, вам может потребоваться
отрегулировать настройки tsconfig.json, такие как rootDir или outDir.

5 – Очистите выходной каталог: Перед повторной компиляцией попробуйте удалить каталог out,
чтобы убедиться, что устаревшие файлы не влияют на сборку:

bash

rm -rf server/out

6 – Проверьте preLaunchTask: Убедитесь, что npm-скрипт watch правильно
настроен в вашем package.json для сборки и отслеживания изменений. Это должно
гарантировать, что файлы пересобираются перед началом сессии отладки.

Структура проекта

Основной - tsconfig.json

Сервер - tsconfig.json

VS Code launch.json

Ответ или решение

К сожалению, у вас возникли проблемы с установкой точек останова в вашем проекте на TypeScript для расширения Visual Studio Code. Давайте рассмотрим некоторые важные детали и предложим возможные решения.

1. Проверьте пути в outFiles

Первое, что нужно сделать – это убедиться, что правильные пути указаны в launch.json. Убедитесь, что у вас установлен параметр outFiles правильно:

"outFiles": [
    "${workspaceFolder}/server/out/**/*.js",
    "${workspaceFolder}/client/out/**/*.js"
]

2. Проверка генерации sourcemaps

Убедитесь, что компилятор TypeScript действительно генерирует sourcemaps. Для этого проверьте, что файлы .js.map находятся в каталоге server/out рядом с .js файлами. Если они отсутствуют, добавьте следующую настройку в ваш tsconfig.json:

{
    "compilerOptions": {
        "sourceMap": true
    }
}

3. Проверьте настройки в tsconfig.json

Убедитесь, что в ваших tsconfig.json файлах установлены правильные параметры, особенно rootDir и outDir. Например:

{
    "compilerOptions": {
        "rootDir": "./src",
        "outDir": "./out",
        "sourceMap": true
    }
}

4. Проверьте пути в sourcemaps

Иногда пути в сгенерированных sourcemaps могут быть некорректными. Откройте один из .js.map файлов и проверьте, что sources указывает на правильное местоположение исходных файлов. Если пути неправильные, возможно, потребуется настроить rootDir или outDir в вашем tsconfig.json.

5. Очистка директории вывода

Перед повторной компиляцией рекомендуется очистить директорию вывода. Это поможет избежать проблем с устаревшими файлами:

rm -rf server/out

6. Проверьте preLaunchTask

Убедитесь, что скрипт watch в package.json корректно настроен на сборку и отслеживание изменений. Это должно гарантировать, что файлы будут перекомпилированы перед началом сессии отладки.

7. Проверка конфигурации отладки

Наконец, убедитесь, что ваша конфигурация для отладки действительно запускает нужный процесс. В конфигурации launch.json проверьте правильность скрипта и аргументы:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Запуск моих расширений",
            "program": "${workspaceFolder}/server/out/your_main_file.js",
            // другие необходимые параметры
        }
    ]
}

Заключение

Если вы выполнили все вышеуказанные шаги, но проблема все еще сохраняется, возможно, будет полезно обратиться к сообществу разработчиков или создать вопрос на форуме, предоставив детали вашего окружения и шаги, которые вы предприняли. Не забывайте, что debugging – это многогранный процесс, и иногда для решения проблемы могут потребоваться нестандартные подходы.

Удачи в отладке вашего проекта на TypeScript!

Оцените материал
Добавить комментарий

Капча загружается...