Отладка
Эта документация объясняет, как можно отлаживать фронтенд и бэкенд код Next.js с полной поддержкой карт источников (source maps), используя либо отладчик VS Code, либо Chrome DevTools.
Любой отладчик, который может подключаться к Node.js, также может использоваться для отладки приложений Next.js. Подробнее можно узнать в Руководстве по отладке Node.js.
Отладка в VS Code
Создайте файл .vscode/launch.json
в корне вашего проекта со следующим содержимым:
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: отладка серверной части",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev"
},
{
"name": "Next.js: отладка клиентской части",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: полная отладка стека",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev",
"serverReadyAction": {
"pattern": "- Local:.+(https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
}
}
]
}
npm run dev
можно заменить на yarn dev
, если вы используете Yarn, или pnpm dev
для pnpm.
Если вы изменяете номер порта, на котором запускается приложение, замените 3000
в http://localhost:3000
на используемый вами порт.
Если вы запускаете Next.js из каталога, отличного от корневого (например, при использовании Turborepo), добавьте параметр cwd
в задачи отладки серверной части и полного стека. Например: "cwd": "${workspaceFolder}/apps/web"
.
Перейдите в панель Debug (Ctrl+Shift+D
на Windows/Linux, ⇧+⌘+D
на macOS), выберите конфигурацию запуска и нажмите F5
или выберите Debug: Start Debugging в Command Palette, чтобы начать сеанс отладки.
Использование отладчика в Jetbrains WebStorm
В выпадающем меню с конфигурациями выполнения выберите Edit Configurations...
. Создайте конфигурацию отладки Javascript Debug
с URL http://localhost:3000
. Настройте по своему усмотрению (например, браузер для отладки, сохранение как файла проекта) и нажмите OK
. Запустите эту конфигурацию, и выбранный браузер должен автоматически открыться. На этом этапе у вас должно быть 2 приложения в режиме отладки: Node-приложение NextJS и клиентское/браузерное приложение.
Отладка с помощью Chrome DevTools
Клиентский код
Запустите сервер разработки как обычно, выполнив next dev
, npm run dev
или yarn dev
. После запуска сервера откройте http://localhost:3000
(или ваш альтернативный URL) в Chrome. Затем откройте Chrome Developer Tools (Ctrl+Shift+J
на Windows/Linux, ⌥+⌘+I
на macOS) и перейдите на вкладку Sources.
Теперь, когда ваш клиентский код достигнет оператора debugger
, выполнение кода приостановится, и файл появится в области отладки. Вы также можете нажать Ctrl+P
на Windows/Linux или ⌘+P
на macOS для поиска файла и установки точек останова вручную. Обратите внимание, что при поиске ваши исходные файлы будут иметь пути, начинающиеся с webpack://_N_E/./
.
Серверный код
Для отладки серверного кода Next.js с помощью Chrome DevTools необходимо передать флаг --inspect
в процесс Node.js:
NODE_OPTIONS='--inspect' next dev
Если вы используете npm run dev
или yarn dev
, обновите скрипт dev
в вашем package.json
:
{
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next dev"
}
}
Запуск сервера разработки Next.js с флагом --inspect
будет выглядеть примерно так:
Debugger listening on ws://127.0.0.1:9229/0cf90313-350d-4466-a748-cd60f4e47c95
For help, see: https://nodejs.org/en/docs/inspector
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
Обратите внимание, что выполнение
NODE_OPTIONS='--inspect' npm run dev
илиNODE_OPTIONS='--inspect' yarn dev
не сработает. Это попытается запустить несколько отладчиков на одном порту: один для процесса npm/yarn и один для Next.js. В консоли вы увидите ошибку типаStarting inspector on 127.0.0.1:9229 failed: address already in use
.
После запуска сервера откройте новую вкладку в Chrome и перейдите по адресу chrome://inspect
, где вы должны увидеть ваше приложение Next.js в разделе Remote Target. Нажмите inspect под вашим приложением, чтобы открыть отдельное окно DevTools, затем перейдите на вкладку Sources.
Отладка серверного кода здесь работает аналогично отладке клиентского кода с Chrome DevTools, за исключением того, что при поиске файлов с помощью Ctrl+P
или ⌘+P
ваши исходные файлы будут иметь пути, начинающиеся с webpack://{application-name}/./
(где {application-name}
будет заменено на имя вашего приложения согласно файлу package.json
).
Отладка на Windows
Пользователи Windows могут столкнуться с проблемой при использовании NODE_OPTIONS='--inspect'
, так как этот синтаксис не поддерживается на платформах Windows. Для решения этой проблемы установите пакет cross-env
как зависимость разработки (-D
для npm
и yarn
) и замените скрипт dev
следующим:
{
"scripts": {
"dev": "cross-env NODE_OPTIONS='--inspect' next dev"
}
}
cross-env
установит переменную окружения NODE_OPTIONS
независимо от платформы (включая Mac, Linux и Windows) и позволит выполнять отладку согласованно на разных устройствах и операционных системах.
Полезно знать: Убедитесь, что Windows Defender отключен на вашем компьютере. Эта внешняя служба проверяет каждый читаемый файл, что, как сообщается, значительно увеличивает время Fast Refresh при работе с
next dev
. Это известная проблема, не связанная с Next.js, но она влияет на разработку в Next.js.
Дополнительная информация
Чтобы узнать больше об использовании отладчика JavaScript, ознакомьтесь со следующей документацией: