在AWS Amplify部署Next.js应用失败:缺失deploy-manifest.json错误
解决AWS Amplify部署Next.js SSR/SSG应用时找不到deploy-manifest.json的问题
针对你遇到的构建失败问题,下面是几个经过验证的解决方案,按优先级排序:
1. 切换到Version 2的BuildSpec配置
你当前使用的是Version 1的BuildSpec,对于混合SSR/SSG的Next.js应用(尤其是Next.js 13+),Amplify的Version 2配置能更好地适配框架特性,自动处理部署清单的生成。修改你的buildspec.yml为:
version: 2 build: phases: preBuild: commands: - npm ci build: commands: - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - node_modules/**/*
如果不想自定义BuildSpec,直接删除项目根目录的buildspec.yml,让Amplify自动检测Next.js框架,它会生成适配的默认配置。
2. 安装Amplify Next.js官方适配器
对于Next.js 13+(尤其是使用App Router)的场景,必须借助官方适配器来让Amplify识别新的目录结构并生成deploy-manifest.json:
- 安装依赖包:
npm install @aws-amplify/adapter-nextjs
- 在
next.config.js中添加适配器配置:
const { withAmplify } = require('@aws-amplify/adapter-nextjs'); const nextConfig = { // 保留你原有的Next.js配置项 }; module.exports = withAmplify(nextConfig);
重新推送代码后,适配器会在构建阶段自动生成Amplify所需的部署清单文件。
3. 检查Next.js版本兼容性
确认你的Next.js版本和Amplify Hosting的兼容情况:
- Next.js 12及以下:可以使用Version 1的BuildSpec,但需确保
next build完成后.next目录完整无缺失。 - Next.js 13+(App Router):必须使用Version 2 BuildSpec或官方适配器,否则Amplify无法解析新的框架结构。
4. 手动生成部署清单(临时应急方案)
如果上述方法都无法快速解决,可尝试在构建命令后手动生成deploy-manifest.json,强制告知Amplify当前应用类型:
修改BuildSpec的build阶段命令:
build: commands: - npm run build - echo '{"version": 1, "framework": "nextjs"}' > .next/deploy-manifest.json
验证步骤
- 本地执行
npm run build,检查.next目录下是否存在deploy-manifest.json(使用适配器的话会自动生成)。 - 确认
.gitignore没有误屏蔽.next目录下的关键文件(比如不要设置.next/**/*这样的规则,保留必要的构建输出)。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

