在AWS Amplify部署Next.js SSR应用时遭遇No ssrResources.json file错误(构建成功但部署失败)
你在通过Amplify控制台部署Next.js应用时,遇到了构建成功但部署失败的问题,核心错误是找不到ssrResources.json文件。结合你提供的日志信息,我整理了几个针对性的解决方向:
1. 确认Next.js版本与Amplify的兼容性
Amplify对Next.js的SSR支持有版本适配要求,尤其是2021年那个阶段,Next.js 12及以上版本需要Amplify控制台的特定配置支持。如果你的项目用了较新的Next.js版本,建议检查Amplify是否已适配该版本,必要时可以暂时降级到稳定兼容的版本测试。
2. 验证构建输出路径配置
登录Amplify控制台,进入你的应用→构建设置→编辑,检查baseDirectory是否设置为.next。Next.js的SSR资源默认生成在这个目录下,如果路径配置错误,Amplify就找不到ssrResources.json文件。
3. 检查构建命令的完整性
确保你的构建命令是标准的npm run build(或yarn build),这个命令会完整生成Next.js的SSR资源。如果用了自定义构建脚本,可能遗漏了生成ssrResources.json的步骤,导致部署时找不到文件。
4. 重新确认应用服务角色权限
虽然你提到已经配置了权限,但还是建议再次检查角色的权限策略:
- 确保角色包含
amplify:*的相关权限 - 确认角色拥有访问Amplify部署对应S3存储桶的读写权限,因为构建产物会先上传到S3,部署时需要读取这些资源
5. 清理缓存后重新构建部署
有时候构建缓存会导致资源生成不完整,你可以在Amplify控制台的构建页面,选择清理构建缓存,然后重新触发构建部署,让所有资源重新生成。
引用你提供的关键日志信息:
2021-09-29T04:42:26 [INFO]: 未找到任何可部署的生成SSR资源。如果您的应用为SSR类型,请检查应用服务角色权限;否则,请查看我们的文档了解如何将应用配置为SSG类型
2021-09-29T04:42:26 [ERROR]: {"code":"7","message":"No ssrResources.json file"}
内容的提问来源于stack exchange,提问作者Abdullah Mujahid

