Nuxt 4.6.0 于 10 月 5 日发布,是这一两个月 Nuxt 侧改动最大的一次。升级前有几件事必须先搞清楚。
先看环境要求 需要 Node ^22.22.3 或 ^24.15.0 或 >=26.0.0。版本不满足的话先升 Node,别急着动 Nuxt。
另外注意:Nuxt 2 和 @nuxt/bridge 已不再支持,Nuxt 3 已到生命周期终点。还在 3.x 的项目要规划迁移了。
CLI 换血
Nuxt CLI v4 带来了交互式的 nuxt dev 终端界面、.nuxt/ 下的锁文件,以及新的 nuxt curl、nuxt task、nuxt docs 命令。
一个破坏性变化:nuxt init 被移除了,新项目改用 npm create nuxt@latest。
nuxt/server 是新的服务端入口 服务端代码可以用一套 web 标准的请求原语,目标是能跨 Nitro v2、Nitro v3 和实验性的 @nuxt/vite-server 运行。
注意它的 helper 和 h3 v1 不一样:
createError接收 status 和 statusText。- headers 通过
event.res.headers设置。
这条最容易踩:在 Nuxt 4 里不要混用自动导入的 h3 helper 和 nuxt/server 的 helper,会触发 NUXT_E8012。
会话:cookie 密封
配置根级的 NUXT_APP_SECRET 之后,可以用 useSession 这一类 cookie 密封的会话 helper。没配这个变量相关功能不可用。
类型化的 $fetch
基于 fetchdts 重建,避免大型路由集合上出现 TypeScript 实例化上限问题。通过 experimental.routeTypedFetch 开启。路由多的项目建议开,能省不少编译期麻烦。
Vue Vapor 互操作 按组件粒度开启,用 vapor 属性。不需要整个项目切换。
安全加固
- 内部错误路由只对错误渲染提供。
- 开发环境的错误报告对远程 peer 做了作用域限制。
- 未处理的错误数据不再传给错误页面。
推荐的升级命令
用 npx nuxt upgrade --dedupe,比手动改 package.json 稳。
想提前试 Nuxt 5 的行为
可以在配置里打开 future.compatibilityVersion: 5,同时可以试 server.builder: vite(实验性,Nitro 仍是默认)。生产项目别开。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。