Next.js网站Vercel部署正常,AWS Amplify部署后现内部服务器错误求助
AWS Amplify部署Next.js出现内部服务器错误的调试步骤
1. 查看Amplify服务器日志
- 进入Amplify控制台找到你的应用,切换到Monitoring标签页,查看Logs下的Web server logs和Function logs(如果有API路由或Serverless函数)
- 重点看
Next.js server logs里的报错堆栈,内部服务器错误的具体原因基本都在这里,比如模块缺失、环境变量没加载、文件路径错误等
2. 核对环境变量配置
- 确认Amplify控制台App settings > Environment variables里的变量和Vercel完全一致,包括变量名和值(注意大小写敏感)
- 带
NEXT_PUBLIC_前缀的前端变量要确保配置正确,这类变量会注入到客户端代码 - 可以在构建命令里加
printenv,输出所有环境变量,验证是否正确加载
3. 检查构建配置
- 打开Amplify的App settings > Build settings,核对
amplify.yml:- 确保
build命令是next build,如果是静态导出要加next export,并确认baseDirectory设置正确(默认.next,静态导出是out) - 同步Node.js版本和Vercel一致,Amplify默认版本可能偏旧,可在配置里指定:
build: commands: - nvm use 18 - npm run build
- 确保
4. 验证路由与API路由
- 如果用了API路由(
pages/api或app/api):- 检查路由里的依赖是否都在
package.json里声明,Amplify构建时会不会漏装 - 直接访问
/api/xxx查看具体报错,定位问题
- 检查路由里的依赖是否都在
- 动态路由需要配置Amplify重写规则,指向
index.html,可在amplify.yml的artifacts下加:rewrite: - source: /<*> target: /index.html status: 200
5. 本地模拟生产环境
- 本地执行
npm run build然后npm start,模拟Amplify的运行环境,看是否能正常启动,排除开发和生产构建的差异 - 确认
package-lock.json或yarn.lock已提交到仓库,避免依赖版本不一致导致问题 - 不要用Vercel特有的功能(比如
vercel.json配置),Amplify不支持,要转成对应配置
6. 尝试静态导出模式(可选)
- 如果是纯静态站点,在
next.config.js里加output: 'export',重新构建部署,排除SSR或ISR相关的服务器端问题
内容的提问来源于stack exchange,提问作者Hammad Ghuman
相关产品推荐
相关产品推荐

