introduction
我们应该如何调试我们的next.js 前端以及后端项目(并具有完整的资源映射 - 源码映射) - 通过 vsCode 调试器 或者 Chrome 开发工具 ..
任何一个能够 依附于Node.js 的调试器能够被用来调试Next.js 应用,你能够了解Node.js Debugging Guide来学习更多 …
使用VS code 调试
首先你需要创建一个名为 .vscode/launch.json
到项目的根中并填充以下内容
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev"
},
{
"name": "Next.js: debug client-side",
"type": "pwa-chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: debug full stack",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev",
"console": "integratedTerminal",
"serverReadyAction": {
"pattern": "started server on .+, url: (https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
}
}
]
}
npm run dev
能够替换为 yarn dev
,如果你使用yarn,如果你改变了应用启动的端口,你可以替换3000 为任意使用的端口 ..
现在让我们来到调试面板(CTRL+SHIFT+D(windows / linux), 或者 ⇧+⌘+D on macOS),选择一个启动配置,然后通过F5或者选择调试(来自调试面板上的start debugging)启动调试会话 …
通过 chrome DevTools 进行调试
客户端代码
通过next dev
或者npm run dev
或者yarn dev
启动开发服务器,一旦开发服务器启动,然后打开http://localhost:3000
或者你自定义的URL在Chrome中,然后打开chrome的开发调试器(CTRL+Shift+J(windows/linux),⌥+⌘+I on macOS)然后点击Sources 标签 ..
<font style="color:rgb(17, 17, 17);">debugger</font>
语句的代码都能够被调试(执行将会被暂停并且文件将会出现在debug 区域),你能够按压CTRL+P(window / linux) 或者 ⌘+P on macOS 去查找一个文件并手动的设置端点 …
注意当你在这里开始查询的时候,你的源文件路径以<font style="color:rgb(17, 17, 17);">webpack://_N_E/./</font>
开始 ..
服务端代码
为了使用Chrome 开发工具调试服务端Next.js 代码,你能够传递—inspect 标志到Node.js 进程 ..
NODE_OPTIONS='--inspect' next dev
如果你使用npm run dev
或者 yarn dev
,那么你应该在package.json
中更新dev
脚本
"dev": "NODE_OPTIONS='--inspect' next dev"
通过--inspect
标志启动Next.js 开发服务器,将会打印如下信息
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
将不会工作 …
这可能将在相同端口启动多个debugger(这将尝试在同一端口上启动多个调试器:一个用于 npm/yarn 进程,一个用于 Next.js),你可能会得到一些错误Staring inspector on 127.0.0.1:9229 failed: address already in use
一旦服务器启动,在chrome中打开一个新的tab然后查看 chrome://inspect
,这里你能够发现你的Next.js 应用存在于远程目标部分,点击位于应用下方的监控(inspect) 然后打开一个独立的开发工具窗口,然后点击Sources 标签页 …
Debugging 服务端代码就像类似于在客户端代码调试,除了搜索的文件不一样(文件的源路径为webpack://{application-name}/./
这里的应用名称将被package.json
文件的应用名称进行替换) …
windows上进行调试
windows 用户也许会存在一个问题(当使用NODE_OPTIONS='--inspect'
,因为这个语法在windows上不支持,为了解决这个问题 ,安装cross-env
包作为一个开发依赖(通过npm --dev
或者 yarn -D
),然后去替换dev
脚本,例如:
"dev": "cross-env NODE_OPTIONS='--inspect' next dev",
cross-env
将会设置NODE_OPTIONS
环境变量(不管你处于那个平台) -包括 windows / mac / linux,然后允许你跨设备和操作系统调试 ..
更多信息
为了学习如何使用js 调试器,查看以下文档