nitro 服务端断点不触发是因为调试未对接其执行链路:nuxi dev 是封装进程,非裸 node.js,需用 pwa-node 类型、runtimeexecutable 设为 "npx"、runtimeargs 为 ["nuxi","dev"],且断点仅在真实 http 请求时触发。

为什么 Nitro 的服务端断点不触发
不是代码写错了,是调试没对上 Nitro 的执行链路。Nuxt 3 默认用 nuxi dev 启动 Nitro 服务端,它不是裸 Node.js 进程,而是封装后的 CLI 工具;VSCode 默认的 node 调试器压根看不到它的上下文,断点永远灰着。
常见现象:在 server/api/hello.ts 打断点,刷新页面后断点不亮、控制台无日志、console.log 不输出——本质是调试器根本没 attach 到 Nitro 实际运行的进程上。
- 必须用
pwa-node类型,不能用node -
runtimeExecutable必须设为"npx",不是"nuxi"(调试模式下不读全局 PATH) -
runtimeArgs必须是["nuxi", "dev"],不是["dev"]或其他变体
launch.json 怎么配才让 Nitro 可调试
直接复制粘贴下面这段进 .vscode/launch.json,别改字段名,尤其注意引号和逗号位置:
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-node",
"request": "launch",
"name": "Nuxt Dev (Nitro)",
"runtimeExecutable": "npx",
"runtimeArgs": ["nuxi", "dev"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
关键细节:
- 删掉所有其他
configurations,只留这一个——避免选错启动项 - 不要加
--inspect或--inspect-brk参数,nuxi dev内部已自动启用调试端口 - 如果项目用了 pnpm,
runtimeExecutable改成"pnpx",否则报 command not found
Volar 和 Nuxt DevTools 缺一不可
没装插件或模式不对,definePageMeta 标红、~/components 跳转失败、useServerSeoMeta 无提示——全是表象,根因是 VSCode 没激活 Nitro 的类型语义。
操作清单:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 彻底禁用
Vetur:它和Volar冲突,会导致整个.vue文件类型系统崩掉 - 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),执行Volar: Switch to Taken Over Mode - 切换后必须关闭整个 VSCode 窗口,再重新打开项目文件夹(仅重启窗口无效)
- 安装官方插件
Nuxt DevTools(作者:Nuxt Labs),不启用右下角图标也得装——它是别名解析和服务端组件高亮的底层依赖
tsconfig.json 里 types 和 paths 必须显式声明
VSCode 不读 nuxt.config.ts 里的 alias,也不自动继承 .nuxt/tsconfig.json。没配好,~/ 和 @/ 就永远标红,useRuntimeConfig 就没类型推导。
TS 项目根目录的 tsconfig.json 至少要含:
{
"extends": "./.nuxt/tsconfig.json",
"compilerOptions": {
"types": ["nuxt"]
}
}
JS 项目则用 jsconfig.json,内容为:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": ["src/*"],
"@/*": ["src/*"]
}
}
}
改完立刻执行 Ctrl+Shift+P → TypeScript: Restart TS server,否则缓存残留,配置等于白改。
真正容易被忽略的是:Nitro 的按需编译发生在请求时,不是启动时。服务端断点只在浏览器发起真实 HTTP 请求(比如地址栏回车、curl)时触发,<nuxtlink></nuxtlink> 导航不会重新走 SSR 流程,也就不会命中断点。










