Отладка Visual Studio с исходными картами

Я использую Microsoft Visual Studio 2013 Update 4 для отладки веб-приложения. Сначала я запустил веб-приложение в Internet Explorer, а затем подключил процесс сценария iexplore, используя параметр отладки «Присоединить к процессу» в Visual Studio. Затем я немедленно получаю новый узел в обозревателе решений под названием «Сценарии документов». В этом узле я нахожу все файлы JavaScript вместе с соответствующими им машинописными файлами. С этого момента я могу открывать файлы JavaScript и устанавливать точки останова. К сожалению, я не могу сделать то же самое для машинописных файлов. Я получаю ошибку «404 not found» при попытке открыть их. Присмотревшись повнимательнее, я вижу, что URL-адрес, используемый для их извлечения, неверен. Итак, я начинаю проверять, правильно ли указан путь к исходным файлам в исходных картах, которые были сгенерированы во время компиляции машинописных файлов. И вроде правильно поставили. Одним из способов, которым я проверил правильность исходных карт, было использование инструментов разработчика для отладки как в Internet Explorer, так и в Chrome. И работали безотказно. Таким образом, единственный вывод, который я мог сделать, заключался в том, что что-то происходило с интерпретацией исходной карты, когда Visual Studio была подключена к IE.

Чтобы правильно это прояснить, позвольте мне кратко объяснить, как выглядят мои исходные карты. Ниже вы найдете шаблон моего исходного файла карты.

{
 version : 3,
 file : "someFile.js",
 sourceRoot : "/",
 sources : ["some/relative/path/someFile.ts"],
 names : ["bla", "bla", "bla"],
 mappings: "aaaG,agAA,agGG,acAA"
}

Итак, я ожидал увидеть путь к файлу typescript в узле Script Documents (если предположить, что веб-приложение запускается на локальном хосте): http://localhost:8081/some/relative/path/someFile.ts

Но вместо этого я вижу, что путь: http://localhost:8081/(AbsolutePathToWhereTheJSFileIs)/some/relative/path/someFile.ts

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

Ваше здоровье!


person KonyKing    schedule 25.11.2014    source источник


Ответы (2)


Это ваш настоящий .map файл?

{
 version : 3,
 file : "someFile.js",
 sourceRoot : "/",
 sources : ["some/relative/path/someFile.ts"],
 names : ["bla", "bla", "bla"],
 mappings: "aaaG,agAA,agGG,acAA"
}

Или вы получаете

{
 version : 3,
 file : "someFile.js",
 sourceRoot : "/",
 sources : ["(AbsolutePathToWhereTheJSFileIs)some/relative/path/someFile.ts"],
 names : ["bla", "bla", "bla"],
 mappings: "aaaG,agAA,agGG,acAA"
}

В любом случае вариант, с которым вы хотите поиграть, - это флаг компилятора sourceRoot, который является параметром конфигурации AbsolutePathToWhereTheJSFileIs.

person basarat    schedule 25.11.2014
comment
Мой файл .map точно такой, как я его написал. Он не содержит AbsolutePathToWhereTheJSFileIs. И я играл с флагом -sourceRoot, и файлы карт в порядке. Я могу отлаживать их в Internet Explorer, а также в Chrome. Единственный раз, когда проблема возникает, это когда я подключаю процесс сценария iexplore к Visual Studio, тогда я из ниоткуда получаю абсолютный путь, вставленный в путь к файлам машинописного текста. У вас есть идеи, почему это может быть? - person KonyKing; 25.11.2014
comment
Тогда должна быть какая-то конфигурация проекта. Нет подсказки. Возможно, сообщите об этом здесь: github.com/Microsoft/TypeScript/issues - person basarat; 26.11.2014
comment
Может быть, это не проблема Typescript, но я попробую. Спасибо за ваше время, хотя. - person KonyKing; 26.11.2014
comment
Но команда TS может указать вам правильную команду. По сути, это присоединение к iexplore после ошибки запуска приложения. Возможно, это не поддерживаемый вариант использования. - person basarat; 26.11.2014

Я нашел, в чем проблема. Код, который обрабатывает сервер узла в моей организации, делал что-то на лету, чего я не заметил. Но мне удалось это сделать, когда я создал простой пример теста, которым хочу поделиться здесь. Таким образом, подключение процесса сценария iexplore к Visual Studio и отладка выполняются без проблем.

person KonyKing    schedule 27.11.2014