Next.js API路由本地正常但部署到SST服务器后无内容返回问题排查
Next.js 13.4.19 API路由在SST部署后返回空响应的解决方法
针对本地API正常、SST部署后返回空响应(状态码200)的问题,可按以下步骤排查修复:
1. 确认SST与Next.js的构建模式配置
Next.js 13的Pages Router在standalone输出模式下,需要SST明确配置才能正确打包API路由的依赖:
- 在
next.config.js中添加:module.exports = { output: "standalone", // 其他原有配置... }; - 同时在SST的栈配置文件(如
stacks/MyStack.ts)中,确保NextjsSite组件指定对应输出模式:import { NextjsSite } from "@serverless-stack/resources"; new NextjsSite(stack, "Site", { path: "src", // 你的Next.js项目根路径 nextjs: { output: "standalone", }, });
修改后重新部署验证。
2. 检查API路由的类型导入完整性
确保test.ts中正确导入Next.js的API类型,缺失导入可能导致编译后的代码在Serverless环境中运行异常:
import type { NextApiRequest, NextApiResponse } from "next"; const testRoute = async(req: NextApiRequest, res: NextApiResponse) => { res.status(200).json({ message: "testing" }); }; export default testRoute;
3. 查看Lambda运行日志排查隐藏异常
SST部署的API路由以AWS Lambda形式运行,可通过AWS CloudWatch查看对应Lambda的日志,定位是否有运行时错误(如JSON序列化失败、依赖缺失):
- 登录AWS控制台进入CloudWatch服务
- 找到对应Lambda函数的日志组,查看最新执行日志
4. 显式结束响应
在Serverless环境中,有时需要显式调用res.end()确保响应被正确发送,修改API路由代码:
const testRoute = async(req: NextApiRequest, res: NextApiResponse) => { res.status(200).json({ message: "testing" }); res.end(); };
5. 验证SST版本兼容性
确认使用的SST版本支持Next.js 13.4.19,建议升级到SST最新稳定版,避免版本不兼容导致的问题。
内容的提问来源于stack exchange,提问作者Wai Yan Hein
相关产品推荐
相关产品推荐

