Ошибка инструкции Typescript: "Точки останова установлены, но еще не связаны" в VS2017
Я создаю проект с "dotnet new angular". Когда точка останова установлена в инструкции Typescript, она отображается в виде открытого красного круга при запуске. Сообщение об ошибке: "Точка останова в настоящее время не будет достигнута. Точки останова установлены, но еще не связаны".
Эта проблема возникла, когда я обновил.Net Core SDK 1.x до 2.x Это ошибка в 2.x или что-то связанное с моей настройкой? У кого-нибудь, использующего 2.x, есть точки останова Typescript, работающие в VS2017? Я опишу мою настройку подробно ниже и где она терпит неудачу.
Чтобы продублировать проблему, вы можете установить точку останова на this.currentCount++; в ClientApp\src\app\counter\counter.component.ts, а затем нажмите "Увеличение" на странице "Счетчик".
Я в настоящее время использую то, что должно быть последними официальными выпусками:
Visual Studio Pro 15.7.2
.Net Core SDK 2.1.300 (x64)
.Net Core Runtime 2.1.0 (x64)
Я пробовал другие выпуски SDK 2.x. Это терпит неудачу в v2.1.4 & v2.1.300. Но точки останова успешны в v2.0.0, 2.1.200 и 2.1.201.
Разница в том, что при успешном выполнении каждый из SDK генерирует файлы "webpack.config.js" и "webpack.config.vendor.js" в корневом каталоге проекта во время "dotnet new angular". Последний выпуск 2.x не генерирует эти файлы в корне. Поэтому я не хочу использовать предыдущие выпуски, которые были.
Другое отличие состоит в том, что рабочие проекты определяют местоположение "ClientApp" в webpack.config.js. В тех проектах, которые терпят неудачу, расположение ClientApp определяется в файле startup.cs.
Еще немного информации:
Используя SDK v2.1.201 (работает), сгенерированный package.json содержит:
"typescript": "2.4.1",
"webpack": "2.5.1",
"webpack-hot-middleware": "2.18.2",
"webpack-merge": "4.1.0",
Используя sdk v2.1.300 (который не работает), сгенерированный package.json содержит:
"typescript": "~2.5.3"
но не содержит записей для веб-пакета. В node_modules/.bin есть "webpack.cmd", версия которого 3.11.0.
Когда я набираю "tsc -v" в окне Команды разработчика VS2017, я получаю:
version 2.8.4
ОБНОВЛЕНИЕ: я добавил проблему к проблемам .Net SDK.
Там меня попросили открыть пункт "Отзывы разработчиков" для Visual Studio. Они считают, что это проблема VS для оснастки TS/JS.
Если у вас также есть эта проблема, это может помочь повысить ее приоритет, если вы добавите на страницу обратной связи.
1 ответ
Обновление от Microsoft в связанной ветке:
Точки останова Typescript в Visual Studio не будут работать для базовых проектов ASP.NET в настоящее время в любой из двух ситуаций:
- Если вы переименовали / удалили каталог "ClientApp" в вашем проекте Visual Studio, чтобы он был чем-то другим, ИЛИ
- У вас есть файлы Typescript/JavaScript в другом каталоге (кроме ClientApp).
К сожалению, в настоящее время у нас нет способа разрешения точек останова в файлах Typescript за пределами папки ClientApp. Мы работаем с соответствующими командами в Visual Studio для исправления того же самого, но если это изменение повлияет на вас, я бы рекомендовал перейти к работе в папке "ClientApp".
Мой обходной путь заключается в том, что я отлаживаю интерфейс отдельно, используя VSCode, который не идеален, но кажется единственным способом заставить его работать с ядром.net и пользовательской структурой проекта.
29 августа 2018 года Блэр Ван сообщил о решении этой проблемы по адресу: https://developercommunity.visualstudio.com/content/problem/268468/typescript-breakpoints-not-hit-in-visual-studio-15.html
"This issue has been fixed and is now available in our latest update. You can download the update via the in-product notification or from here: https://visualstudio.microsoft.com/vs/"
Я не видел этого до сегодняшнего дня (2018-03-23), когда я тестировал исправление, используя:
Visual Studio v15.9.9
.Net Core SDK 2.2.105
.Net core Host 2.2.3
Typescript 3.1.2
Для всех, кто сталкивается с этой проблемой при использовании.Net Core 3.1 и Angular/TypeScript, решение для меня заключалось в том, чтобы добавить app.UseSpaStaticFiles() перед строкой app.Use() в методе конфигурации Startup.cs:
// Declare middleware "use" statements before app.Use() in order to run/debug properly.
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseSpaStaticFiles();
app.UseCookiePolicy();
app.UseStaticFiles();
// Necessary to force users to authenticate
app.Use(async (context, next) =>
{
if (!context.User.Identity.IsAuthenticated)
{
await context.ChallengeAsync();
}
else
{
await next();
}
});
Изначально у меня был оператор app.UseSpaStaticFiles() под разделом app.Use, и я получил сообщение "точки останова установлены, но еще не связаны". Это произошло в Visual Studio 2019. После перемещения операторов промежуточного программного обеспечения точки останова начали работать. (Я думаю, что это работало до того, как я обновился до.Net Core 3, но я не уверен.)