Вопрос или проблема
Я склонировал этот репозиторий…
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 для сборки и отслеживания изменений. Это должно
гарантировать, что файлы пересобираются перед началом сессии отладки.
Ответ или решение
К сожалению, у вас возникли проблемы с установкой точек останова в вашем проекте на 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!