Next 13使用serialize函数时触发URI格式错误排查求助
Next.js 13 中 serialize 函数报 "URI malformed" 错误排查方案
核心排查方向
- 检查 Cookie 内容合法性:
parseCookieString报错大概率是因为 Cookie 包含不符合 URI 规范的字符,比如未转义的空格、[/]/{这类特殊符号。可以先打印所有待序列化的 Cookie 键值对,逐个排查非法字符。 - 手动转义特殊字符:确认是特殊字符导致问题后,调用
serialize前用encodeURIComponent()处理 Cookie 值:import { serialize } from 'next/dist/server/web/spec-extension/cookies'; const safeValue = encodeURIComponent(yourCookieValue); const serializedCookie = serialize('cookie-name', safeValue, { path: '/' }); - 升级 Next.js 小版本:即便怀疑是框架 Bug,也可以先升级到 Next 13 的最新小版本,多数边缘问题会在迭代中修复。
- 排查服务端 Cookie 逻辑:如果在 Server Components 或 API Route 中操作 Cookie,检查是否存在第三方库写入非法 Cookie、重复覆盖 Cookie 的情况。
临时规避方案
若需紧急恢复服务,可替换 Next.js 内置的 serialize 函数,使用第三方 cookie 包处理:
import { serialize } from 'cookie'; const serializedCookie = serialize('cookie-name', yourValue, { path: '/' });
内容的提问来源于stack exchange,提问作者nikolay.akhmetyanov
相关产品推荐
相关产品推荐

