Поделиться через


Отладка приложения JavaScript или TypeScript в Visual Studio

Visual Studio позволяет выполнять отладку кода JavaScript и TypeScript. Вы можете использовать точки останова, подключать отладчик, инспектировать переменные, просматривать стек вызовов и применять другие отладочные функции.

Совет

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.

Совет

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. Если вы разрабатываете Node.js приложения, необходимо установить рабочую нагрузку разработки Node.js с помощью Visual Studio.

Отладка серверного скрипта

  1. Открыв проект в Visual Studio, откройте файл JavaScript на стороне сервера (например, server.js) и щелкните в полях, чтобы задать точку останова:

    Снимок экрана окна кода Visual Studio с кодом JavaScript. Красная точка в поле слева показывает заданную точку останова.

    Точки останова — это самая основная и важная функция надежной отладки. Точка останова указывает, в каком месте Visual Studio следует приостановить выполнение, чтобы вы могли проверить значения переменных, работу памяти или срабатывание ветви кода.

  2. Чтобы запустить приложение, нажмите клавишу F5 (или выберите пункт меню Отладка>Начать отладку).

    В заданной точке останова отладчик приостанавливается (интегрированная среда разработки выделяет инструкцию на желтом фоне). Теперь вы можете изучить состояние приложения, наводя указатель мыши на переменные в текущей области и используя окна отладчика, такие как Локальные переменные и Контрольные значения.

    Снимок экрана окна кода Visual Studio с кодом JavaScript. Красная точка с желтой стрелкой в поле слева показывает приостановку выполнения кода.

  3. Чтобы продолжить выполнение приложения, нажмите клавишу F5.

  4. Если вы хотите использовать средства для разработчиков Chrome DevTools, нажмите в браузере Chrome клавишу F12. Эти средства позволяют анализировать модель DOM или взаимодействовать с приложением через консоль JavaScript.

Отладка клиентского скрипта

Visual Studio предоставляет поддержку отладки на стороне клиента только для Chrome и Microsoft Edge. В некоторых сценариях отладчик автоматически попадает в точки останова в коде JavaScript и TypeScript и внедренных скриптах в HTML-файлах.

  • Чтобы отладить клиентский скрипт в приложениях ASP.NET, выберите "Параметры> отладки инструментов>", а затем выберите "Включить отладку JavaScript" для ASP.NET (Chrome, Edge и IE).

    Если вы предпочитаете использовать средства разработчика Chrome или средства F12 для Microsoft Edge для отладки клиентского скрипта, следует отключить этот параметр.

    Дополнительные сведения см. в этой записи блога для Google Chrome. Сведения об отладке TypeScript в ASP.NET Core см. в разделе "Добавление TypeScript" в существующее приложение ASP.NET Core.

  • Для Node.js приложений и других проектов JavaScript выполните описанные здесь действия.

Примечание.

Для ASP.NET и ASP.NET Core отладка внедренных скриптов в файлах .cshtml не поддерживается. Чтобы включить отладку, код JavaScript должен находиться в отдельных файлах.

Подготовка приложения к отладке

Если источник минифицируется или создается транспилером, например TypeScript или Babel, используйте карты источников для оптимальной отладки. Возможно даже подключение отладчика к работающему скрипту на стороне клиента без сопоставителей с исходным кодом. Однако задание и использование точек останова могут быть возможны только в минифицированном или транскомпилированном файле, но не в исходном. Например, в приложении Vue.js минифицированный скрипт передается инструкции eval в виде строки, и какого-либо эффективного способа пошаговой отладки этого кода в отладчике Visual Studio, кроме сопоставителей с исходным кодом, не существует. Для сложных сценариев отладки вместо этого может потребоваться использовать средства разработчика Chrome или F12 Tools для Microsoft Edge.

Справку о создании сопоставителей с исходным кодом см. в разделе Создание сопоставлений источника для отладки.

Подготовка браузера к отладке

Для этого сценария используйте Microsoft Edge или Chrome.

  1. Закройте все окна для целевого браузера, экземпляры Microsoft Edge или Chrome.

    Другие экземпляры браузера могут препятствовать его открытию при включенной отладке. (Расширения браузера могут выполняться и перехватывать полный режим отладки, поэтому может потребоваться открыть диспетчер задач, чтобы найти и закрыть непредвиденные экземпляры Chrome или Edge.)

    Для получения наилучших результатов завершите работу всех экземпляров Chrome, даже если вы работаете с Microsoft Edge. Оба браузера используют одну и ту же базу кода Chromium.

  2. Запустите браузер с включенной отладкой.

    Начиная с Visual Studio 2019, вы можете задать --remote-debugging-port=9222 флаг при запуске браузера, выбрав "Обзор с помощью...> на панели инструментов отладки ".

    Снимок экрана: выбор параметра

    Если на панели инструментов отладки не отображается команда "Обзор с...", выберите другой браузер и повторите попытку.

    В диалоговом окне "Обзор с помощью" нажмите кнопку "Добавить", а затем установите флаг в поле "Аргументы ". Используйте другое понятное имя браузера, например режим отладки Edge или режим отладки Chrome. Подробности см. в заметках о выпуске.

    Снимок экрана задания параметров браузера для открытия с включенной отладкой.

    Выберите "Обзор" , чтобы запустить приложение с браузером в режиме отладки.

    Также можно открыть команду Выполнить кнопки Пуск в Windows (щелкнуть правой кнопкой мыши команду Выполнить) и ввести следующую команду:

    msedge --remote-debugging-port=9222

    или

    chrome.exe --remote-debugging-port=9222

    Ваш браузер будет запущен в режиме отладки.

    Приложение еще не работает, поэтому страница в браузере будет пустой. (Если вы запускаете браузер с помощью команды Run, необходимо вставить правильный URL-адрес для экземпляра приложения.)

Подключение отладчика к сценарию на стороне клиента

Чтобы подключить отладчик из Visual Studio и использовать точки останова в коде на стороне клиента, необходимо указать отладчику верный процесс. Ниже описывается один из способов.

  1. Убедитесь, что приложение работает в браузере в режиме отладки, как описано в предыдущем разделе.

    Если вы создали конфигурацию браузера с понятным именем, выберите ее в качестве целевого объекта отладки, а затем нажмите клавиши CTRL+F5 (Отладка>без отладки), чтобы запустить приложение в браузере.

  2. Перейдите в Visual Studio, а затем установите точку останова в исходном коде, который может быть файлом JavaScript, TypeScript или JSX. (Выберите для точки останова строку кода, в которой допустимы точки останова, например оператор return или объявление var).

    Снимок экрана окна кода Visual Studio. Выбран оператор return, и красная точка в поле слева показывает заданную точку останова.

    Чтобы найти конкретный код в транспонированном файле, используйте Ctrl+F (Изменить>Найти и заменить >Быстрый поиск).

    Для кода на стороне клиента, чтобы использовать точку останова в файле TypeScript, .vueили JSX, как правило, необходимы сопоставители с исходным кодом. Сопоставитель с исходным кодом следует правильно настроить, чтобы он поддерживал отладку в Visual Studio.

  3. Выберите Отладка>Присоединение к процессу.

    Совет

    Начиная с версии Visual Studio 2017, после первого подключения процесса согласно этим инструкциям вы можете быстро присоединять его повторно, выбирая Отладка>Повторно подключиться к процессу.

  4. В диалоговом окне "Присоединение к процессу " выберите JavaScript и TypeScript (Средства разработки Chrome/V8 Inspector) в качестве типа подключения.

    Целевой объект отладчика, например http://localhost:9222, должен отображаться в поле "Целевой объект подключения".

  5. В списке экземпляров браузера выберите процесс браузера с правильным портом узла (https://localhost:7184/ в этом примере) и нажмите кнопку "Присоединить".

    Порт (например, 7184) также может отображаться в поле "Заголовок ", чтобы помочь выбрать правильный экземпляр браузера.

    В следующем примере показано, как это выглядит в браузере Microsoft Edge.

    Снимок экрана с подключением к процессу в меню

    Совет

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

  6. Возможно, код с точкой останова уже был выполнен. Обновите страницу браузера. При необходимости выполните действия, приводящие к выполнению кода с точкой останова.

    Когда отладчик приостановит выполнение, вы можете изучить состояние приложения, наводя указатель мыши на переменные и используя окна отладчика. Вы также можете выполнять пошаговую отладку кода (клавиши F5, F10 и F11). Дополнительные сведения об основных функциях отладки см. в разделе Первое знакомство с отладчиком.

    Вы можете попасть в точку останова в транспилированного .js файла или исходного файла в зависимости от типа приложения, который вы выполнили ранее, и другие факторы, такие как состояние браузера. В любом случае вы можете выполнять пошаговую отладку кода и просматривать переменные.

    • Если вам нужно разбить код в файле TypeScript, JSX или .vue исходном файле и не удается выполнить его, убедитесь, что среда настроена правильно, как описано в разделе "Устранение неполадок ".

    • Если вам нужно декомпозировать код в файле с компиляцией в код на языке программирования JavaScript (например, app-bundle.js), но сделать это не удается, удалите файл сопоставления источника filename.js.map.

Чтобы подключить отладчик из Visual Studio и использовать точки останова в коде на стороне клиента, необходимо указать отладчику верный процесс. Ниже описывается один из способов.

  1. Убедитесь, что приложение работает в браузере в режиме отладки, как описано в предыдущем разделе.

    Если вы создали конфигурацию браузера с понятным именем, выберите ее в качестве целевого объекта отладки, а затем нажмите клавиши CTRL+F5 (Отладка>без отладки), чтобы запустить приложение в браузере.

  2. Перейдите в Visual Studio, а затем установите точку останова в исходном коде, который может быть файлом JavaScript, TypeScript или JSX. (Выберите для точки останова строку кода, в которой допустимы точки останова, например оператор return или объявление var).

    Снимок экрана окна кода Visual Studio. Выбран оператор return, и красная точка в поле слева показывает заданную точку останова.

    Чтобы найти конкретный код в транспонированном файле, используйте Ctrl+F (Изменить>Найти и заменить >Быстрый поиск).

    Для кода на стороне клиента, чтобы использовать точку останова в файле TypeScript, .vueили JSX, как правило, необходимы сопоставители с исходным кодом. Сопоставитель с исходным кодом следует правильно настроить, чтобы он поддерживал отладку в Visual Studio.

  3. Выберите Отладка>Присоединение к процессу.

    Совет

    Начиная с версии Visual Studio 2017, после первого подключения процесса согласно этим инструкциям вы можете быстро присоединять его повторно, выбирая Отладка>Повторно подключиться к процессу.

  4. В диалоговом окне Подключение к процессу получите отфильтрованный список экземпляров браузера, к которым можно подключиться. Выберите подходящий отладчик для целевого браузера, JavaScript (Chrome) или JavaScript (Microsoft Edge — Chromium), в поле Подключить к, а затем введите chrome или edge в поле фильтра, чтобы отфильтровать результаты поиска.

  5. Выберите процесс браузера с правильным портом узла (localhost в этом примере) и нажмите кнопку "Подключить".

    Порт (например 1337) также может отображаться в поле Заголовок, чтобы помочь выбрать правильный экземпляр браузера.

    В следующем примере показано, как это выглядит в браузере Microsoft Edge.

    Снимок экрана с подключением к процессу в меню

    Совет

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

  6. Возможно, код с точкой останова уже был выполнен. Обновите страницу браузера. При необходимости выполните действия, приводящие к выполнению кода с точкой останова.

    Когда отладчик приостановит выполнение, вы можете изучить состояние приложения, наводя указатель мыши на переменные и используя окна отладчика. Вы также можете выполнять пошаговую отладку кода (клавиши F5, F10 и F11). Дополнительные сведения об основных функциях отладки см. в разделе Первое знакомство с отладчиком.

    Вы можете попасть в точку останова в транспилированного .js файла или исходного файла в зависимости от типа приложения, который вы выполнили ранее, и другие факторы, такие как состояние браузера. В любом случае вы можете выполнять пошаговую отладку кода и просматривать переменные.

    • Если вам нужно разбить код в файле TypeScript, JSX или .vue исходном файле и не удается выполнить его, убедитесь, что среда настроена правильно, как описано в разделе "Устранение неполадок ".

    • Если вам нужно декомпозировать код в файле с компиляцией в код на языке программирования JavaScript (например, app-bundle.js), но сделать это не удается, удалите файл сопоставления источника filename.js.map.

Устранение неполадок с точками останова и картами источников

Если вам нужно использовать точки останова в коде из исходного файла TypeScript или JSX, но сделать это не удается, используйте Подключение к процессу, чтобы присоединить отладчик, как описано в предыдущем разделе. Убедитесь, что ваша среда настроена правильно:

  • Закройте все экземпляры браузера, включая расширения Chrome (используя диспетчер задач), чтобы можно было запускать браузер в режиме отладки.

  • Обязательно запустите браузер в режиме отладки.

  • Убедитесь, что файл сопоставителя с исходным кодом содержит правильный относительный путь к исходному файлу и не включает неподдерживаемые префиксы, такие как webpack:///, которые не позволяют отладчику Visual Studio найти исходный файл. Например, ссылку, подобную webpack:///.app.tsx, можно исправить на ./app.tsx. Это можно сделать вручную в файле сопоставителя с исходным кодом (что удобно для тестирования) или с помощью пользовательской конфигурации сборки. Дополнительные сведения см. в разделе Создание сопоставителя с исходным кодом для отладки.

Либо, если вам нужно декомпозировать код в исходном файле (например app.tsx), но сделать это не удается, попробуйте использовать оператор debugger; в исходном файле или установите точки останова в инструментах для разработчиков в Chrome (или средства F12 для Microsoft Edge).

Создание исходных карт для отладки

В Visual Studio можно использовать и создавать сопоставления источника для исходных файлов JavaScript. Такая возможность часто нужна, когда исходный код минифицирован или создан в транспайлере, например в TypeScript или Babel. Доступные варианты зависят от типа проекта.

  • Проект TypeScript в Visual Studio по умолчанию автоматически создает сопоставления источника. Дополнительные сведения см. в разделе Настройка сопоставлений источника с помощью файла tsconfig.json.

  • В проекте JavaScript сопоставления источника можно создать с помощью средства упаковки (например, webpack) и компилятора (например, TypeScript или Babel), которые вы можете добавить в проект. Для компилятора TypeScript необходимо также добавить tsconfig.json файл и задать параметр компилятора sourceMap . Пример такой операции на основе базовой конфигурации webpack вы найдете в руководстве по созданию приложения Node.js с использованием React.

Примечание.

Если вы не знакомы с исходными картами, прочитайте статью "Что такое исходные карты?", прежде чем продолжить.

Чтобы настроить дополнительные параметры для исходных карт, используйте tsconfig.json параметры проекта в проекте TypeScript, но не оба.

Чтобы включить отладку с помощью Visual Studio, необходимо убедиться в правильности ссылок на исходный файл в созданном сопоставителе с исходным кодом (может потребоваться тестирование). Например, если вы используете webpack, ссылки в файле сопоставителя с исходным кодом включают префикс webpack:///, который не позволяет Visual Studio найти исходный файл TypeScript или JSX. В частности, при исправлении для отладки, ссылку на исходный файл (например, app.tsx) следует изменить с webpack:///./app.tsx на ./app.tsx, что включает отладку (путь относительно вашего исходного файла). В следующем примере показано, как настроить сопоставители с исходным кодом в webpack, который является одним из наиболее распространенных средств увязки, чтобы они работали с Visual Studio.

(Только для webpack.) Если точка останова устанавливается в файле TypeScript или JSX (а не в транскомпилированном файле JavaScript), необходимо обновить конфигурацию webpack. Например, в файлwebpack-config.jsможет потребоваться заменить следующий код:

  output: {
    filename: "./app-bundle.js", // This is an example of the filename in your project
  },

таким кодом:

  output: {
    filename: "./app-bundle.js", // Replace with the filename in your project
    devtoolModuleFilenameTemplate: '[absolute-resource-path]'  // Removes the webpack:/// prefix
  },

Это настройка только для разработки, позволяющая отладку кода на стороне клиента в Visual Studio.

В сложных сценариях средства браузера (F12) иногда лучше подходят для отладки, так как для них не нужно выполнять изменения в пользовательских префиксах.

Настройка сопоставлений источника с помощью файла tsconfig.json

При добавлении tsconfig.json файла в проект Visual Studio обрабатывает корневой каталог как проект TypeScript. Чтобы добавить файл, щелкните проект правой кнопкой мыши в обозревателе решений и последовательно выберите Добавить > Новый элемент > JSON-файл конфигурации TypeScript. Файл tsconfig.json , как показано ниже, добавляется в проект.

{
  "compilerOptions": {
    "noImplicitAny": false,
    "module": "commonjs",
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"
  },
  "exclude": [
    "node_modules"
  ]
}

Параметры компилятора для файла tsconfig.json

  • inlineSourceMap: выведите один файл с исходными картами вместо создания отдельной карты источника для каждого исходного файла.
  • inlineSources: выведите источник вместе с исходными картами в одном файле; требуется задать inlineSourceMap или sourceMap.
  • mapRoot: указывает расположение, в котором отладчик должен находить файлы карты источника (MAP) вместо расположения по умолчанию. Используйте этот флаг, если файлы во время .map выполнения должны находиться в другом расположении, отличном .js от файлов. Указанное расположение внедрено в исходную карту, чтобы направить отладчик в расположение .map файлов.
  • sourceMap: создает соответствующий .map файл.
  • sourceRoot: указывает расположение, в котором отладчик должен находить файлы TypeScript вместо исходных расположений. Используйте этот флаг, если в ходе время выполнения и разработки исходные файлы должны размещаться в разных каталогах. Указанное здесь расположение внедряется в сопоставление источника, чтобы указать для отладчика расположение исходных файлов.

Дополнительные сведения о параметрах компилятора вы найдете на странице с параметрами компилятора в справочнике по TypeScript.

Настройка сопоставителей с исходным кодом с помощью параметров проекта (TypeScript project)

Для проектов сборки с помощью пакета SDK TypeScript, включенного в Visual Studio, можно настроить параметры исходной карты с помощью свойств проекта, щелкнув проект правой кнопкой мыши и выбрав "Отладка сборки > TypeScript для > > проекта".

Здесь доступны следующие параметры проекта.

  • Создание исходных карт (эквивалентно sourceMap в tsconfig.json): создает соответствующий .map файл.
  • Укажите корневой каталог исходных карт (эквивалент mapRoot в tsconfig.json): указывает расположение, в котором отладчик должен находить файлы карты вместо созданных расположений. Используйте этот флаг, если файлы во время .map выполнения должны находиться в другом расположении, отличном .js от файлов. Указанное здесь расположение внедряется в сопоставление источника, чтобы указать для отладчика расположение файлов сопоставления.
  • Укажите корневой каталог файлов TypeScript (эквивалентный sourceRoot в tsconfig.json): указывает расположение, в котором отладчик должен находить файлы TypeScript вместо исходных расположений. Используйте этот флаг, если в ходе выполнения и разработки исходные файлы должны размещаться в разных каталогах. Указанное здесь расположение внедряется в сопоставление источника, чтобы указать для отладчика расположение исходных файлов.

Отладка JavaScript в динамических файлах с помощью Razor (ASP.NET)

В Visual Studio 2022 можно отлаживать страницы Razor с помощью точек останова. Дополнительные сведения см. в разделе "Использование средств отладки" в Visual Studio.

Начиная с Visual Studio 2019 Visual Studio предоставляет поддержку отладки только для Chrome и Microsoft Edge.

Однако невозможно автоматически использовать точки останова в файлах, созданных с синтаксисом Razor (cshtml, vbhtml). Для отладки файлов такого типа вы можете применить два следующих подхода.

  • Поместите инструкцию debugger; там, где необходимо прерывание: эта инструкция останавливает выполнение динамического скрипта и запускает отладку сразу же в процессе его создания.

  • Загрузите страницу и откройте динамический документ в Visual Studio: необходимо открыть динамический файл во время отладки, задать точку останова и обновить страницу для работы этого метода. В зависимости от того, используете ли вы Chrome или Microsoft Edge, найдите файл с помощью одной из следующих стратегий:

    • Для Chrome откройте пункты меню Обозреватель решений > Документы скриптов > Имя_нужной_страницы.

      Примечание.

      Если вы используете Chrome, может появиться сообщение о том, что исходный код между тегами <script> недоступен. Это нормально, просто продолжайте отладку.

    • Для Microsoft Edge используйте ту же процедуру, что и Chrome.

Дополнительные сведения см. в руководстве по отладке проектов ASP.NET в браузере Google Chrome на стороне клиента.

Свойства, React, Angular, Vue