使用AWS Amplify部署Next.js应用失败,请求技术支持
解决AWS Amplify部署Next.js(Yarn构建)失败的问题
针对你遇到的三个核心问题,逐个给出具体修复方案:
1. 处理Failed to set up process.env.secrets警告
- 登录Amplify控制台,进入你的项目→「App Settings」→「Environment variables」,检查所有需要的密钥是否已正确添加,变量名要和代码中引用的完全一致(前端可访问的变量需以
NEXT_PUBLIC_开头,服务器端变量无需前缀)。 - 不要在
next.config.js中手动赋值process.env下的密钥,Amplify会自动将配置的环境变量注入构建流程。 - 清理构建缓存:在「Build history」中选择最近一次失败的构建,点击「Redeploy with cache cleared」,避免旧缓存导致的变量读取异常。
2. 修复next.config.js配置无效问题
- 检查语法规范:Next.js 12及以下版本请使用
module.exports导出配置(Amplify构建环境对CommonJS兼容性更好),避免使用ES模块的export default;13+版本若使用App Router,确保配置项符合官方要求。 - 排查配置错误:检查是否有拼写错误(比如
images.domains写成image.domains)、值类型错误(比如将数组配置写成字符串),或使用了当前Next.js版本不支持的配置项。 - 本地验证:在本地执行
yarn build,复现配置无效的错误,先在本地修复完成后再推送代码。
3. 解决next export与Image Optimization不兼容的构建失败
这个问题是因为Next.js默认的Image优化依赖服务器端能力,而next export生成的是纯静态文件,二者冲突,有两种解决思路:
方案一:禁用Image Optimization(适合纯静态导出场景)
在next.config.js中添加如下配置:
module.exports = { images: { unoptimized: true, }, }
注意:启用该配置后,Next.js的Image组件不再自动优化图片,你需要自行处理图片的尺寸、格式,或改用原生img标签。
方案二:改用SSR模式部署(保留Image Optimization)
放弃next export命令,让Amplify按Next.js SSR模式构建:
- 修改Amplify的构建配置文件
amplify.yml,确保构建命令仅保留yarn build,删除yarn export步骤:build: commands: - yarn install - yarn build - Amplify会自动识别Next.js应用并部署为SSR模式,原生支持Image Optimization功能。
通用排查步骤
- 对齐Yarn版本:在Amplify控制台「Build image settings」中选择与本地一致的Node.js版本,可在
amplify.yml中添加yarn --version命令查看构建环境的Yarn版本,避免版本差异导致的依赖安装问题。 - 检查
.gitignore:确保next.config.js未被忽略,已提交到代码仓库。 - 查看完整日志:在Amplify构建历史中展开完整错误堆栈,定位更具体的错误位置(比如
next.config.js的错误行号)。
内容的提问来源于stack exchange,提问作者nuguri
相关产品推荐
相关产品推荐

