现象
访问FastGPT的/login页面时出现Server Error,完整报错文本为:Error: Error serializing .ChineseRedirectUrl returned from getServerSideProps in "/login". Reason: undefined cannot be serialized as JSON. Please use null or omit this value.。日志显示该错误发生在Next.js的服务端渲染流程中,错误堆栈涉及next/dist/compiled/next-server/pages.runtime.dev.js文件,触发于服务端渲染的doRender环节。
可能原因
该报错由Next.js的JSON序列化限制直接触发。getServerSideProps函数返回的ChineseRedirectUrl字段值为undefined,而Next.js要求服务端通过getServerSideProps返回的props对象必须可序列化为合法的JSON字符串,undefined不属于合法的JSON数据类型,因此抛出该错误。由于该问题出现在私有部署版本中,需结合实际部署配置确认ChineseRedirectUrl变量的加载来源与赋值逻辑。
排查步骤
- 定位
/login页面的getServerSideProps函数代码,找到ChineseRedirectUrl变量的赋值逻辑; - 检查该变量在代码执行过程中是否存在未被正确初始化或赋值的情况;
- 确认部署环境中加载的相关配置项是否正常提供了该变量的有效值;
- 排查是否存在环境变量加载失败或配置项拼写错误导致变量未被赋值的问题。
解决与验证
解决方法:将ChineseRedirectUrl的初始值设置为null,或在返回getServerSideProps的props对象前过滤掉undefined值,确保该字段为合法的JSON可序列化值。例如,可以在赋值时添加默认值ChineseRedirectUrl = config.ChineseRedirectUrl ?? null,避免出现undefined。验证步骤:1. 修改对应代码后重启FastGPT服务;2. 访问/login页面,确认不再出现该序列化报错;3. 打开浏览器开发者工具,检查网络请求与页面渲染是否正常;4. 完成登录流程,确认业务功能不受影响。