NextJS 14部署AWS Amplify后服务端日志无法在CloudWatch显示
AWS Amplify部署NextJS 14服务端日志与API验证问题解决方案
一、查看服务端console.log的方法
- 服务端API在Amplify中以Lambda函数形式运行,直接进入AWS控制台的Lambda服务,找到名称包含
amplify-nextjs-server-前缀的对应函数,查看其关联的CloudWatch日志组,即可获取服务端的console.log输出。 - 若日志仍未出现,需先检查部署配置是否正确打包了服务端代码(见第三部分)。
二、验证服务端API是否执行的方法
- 直接调用API端点:用curl或Postman直接请求
https://你的Amplify域名/api/auth,观察返回结果是否符合预期,快速确认API是否正常响应。 - 添加自定义响应标识:在服务端API路由文件(如
app/api/auth/route.ts)中添加自定义响应头,示例代码:
客户端调用后查看响应头,若存在export async function POST(request: Request) { // 你的业务逻辑 return new Response(JSON.stringify({ Token: "xxx" }), { headers: { "X-Server-Executed": "true" } }); }X-Server-Executed字段,则说明服务端代码已执行。 - 写入外部存储:在服务端API中添加简单的写入逻辑,比如向DynamoDB或S3写入一条日志记录,通过查看存储内容确认代码运行状态。
三、修复部署配置问题
你的next.config.js启用了output: 'standalone',但Amplify的artifacts配置未匹配该模式的产物路径,导致服务端代码未正确部署。修改部署配置如下:
version: 1 frontend: phases: preBuild: commands: - npm ci --cache .npm --prefer-offline build: commands: - env | grep -e NEXT_PUBLIC_ >> .env.production - npm run build artifacts: baseDirectory: .next/standalone files: - '**/*' - .next/static/**/* - public/**/* cache: paths: - .next/cache/**/* - .npm/**/*
baseDirectory改为.next/standalone:对应standalone模式的核心运行文件目录。- 新增
.next/static/**/*和public/**/*:确保静态资源和公共文件被正确上传,避免页面资源缺失。
另外,需确认服务端API路由文件的方法导出正确(如export async function POST(...)),若路由文件不存在或方法导出错误,API将无法执行。
内容的提问来源于stack exchange,提问作者Dvex
相关产品推荐
相关产品推荐

