Capítulo 38 de 456
Como debugar frontend e backend de um app Next.js com source maps completos, usando VS Code, WebStorm ou DevTools do Chrome/Firefox.
.vscode/launch.json: define configurações de debug (node-terminal para server-side, chrome/firefox para client-side, node para full stack).--inspect flag: passado ao next dev (npm run dev -- --inspect) para expor o processo Node.js a um debugger externo; usar --inspect=0.0.0.0 para debug remoto (ex.: Docker).NODE_OPTIONS=--inspect-brk: necessário para usar --inspect-brk/--inspect-wait, que não podem ser passados como flag direta do next dev.webpack://_N_E/./: prefixo de path usado pelos source maps do client-side ao buscar arquivo (Ctrl+P/⌘+P) no DevTools.webpack://{application-name}/./: prefixo equivalente para arquivos server-side, onde {application-name} vem do package.json.{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev -- --inspect"
},
{
"name": "Next.js: debug client-side",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: debug full stack",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/next/dist/bin/next",
"runtimeArgs": ["--inspect"],
"skipFiles": ["<node_internals>/**"],
"serverReadyAction": {
"action": "debugWithEdge",
"killOnServerStop": true,
"pattern": "- Local:.+(https?://.+)",
"uriFormat": "%s",
"webRoot": "${workspaceFolder}"
}
}
]
}
debugWithEdge troca para debugWithChrome conforme o browser usado.# Server-side debug via terminal, aberto no chrome://inspect ou about:debugging
npm run dev -- --inspect
next dev a qualquer debugger externo compatível.next dev; desabilitar/excluir a pasta é recomendado.cwd: rodando o Next.js fora da raiz do workspace, as configs de debug server-side/full stack precisam de "cwd": "${workspaceFolder}/apps/web" ou falham ao localizar o processo.launch.json; full stack combina ambas com serverReadyAction.--inspect (ou NODE_OPTIONS=--inspect-brk para break-on-start) é o mecanismo comum a VS Code, Chrome DevTools e Firefox DevTools.webpack://_N_E/./) e server (webpack://{app-name}/./) ao buscar arquivo no DevTools.NODE_ENV interage com qual .env* é carregado durante sessões de debug/test.