Next JS SSG应用在Amazon Amplify部署时构建失败问题求助
故障排查与解决方案
从你提供的构建日志可以看出,错误触发在next build && next export脚本执行阶段,返回非零退出码1,但当前日志没有输出Next.js构建过程的具体报错信息,可按照以下优先级排查问题:
1. 优先本地复现验证
先在本地开发环境执行 npm run build 命令,确认本地是否可以正常构建完成:
- 如果本地也报错,可直接根据本地抛出的具体错误修复代码问题,常见原因包括:
- 代码存在语法错误、依赖未正确安装
- 使用了
next export不支持的能力:包括getServerSideProps、增量静态再生(ISR)、Next.js API路由等 - 静态资源引用路径错误
- 如果本地可以正常构建,再排查Amplify平台侧的配置问题
2. Node版本兼容性修正
日志显示Amplify构建环境使用的Node版本为v12.21.0,如果你使用的Next.js版本≥12,要求Node版本最低为v12.22.0,版本不匹配会直接导致构建失败。
修复方式:在Amplify控制台的应用「环境变量」配置页,添加变量AMPLIFY_NODE_VERSION,值设置为和本地开发一致的兼容版本(推荐v14、v16的LTS版本),保存后重新触发构建。
3. 检查Amplify构建配置
确认你的amplify.yml配置和SSG部署要求匹配,重点检查输出目录配置:
version: 1 frontend: phases: preBuild: commands: - npm install build: commands: - npm run build artifacts: # next export的输出目录为out,必须配置正确 baseDirectory: out files: - '**/*' cache: paths: - node_modules/**/*
如果baseDirectory配置为.next会导致Amplify找不到构建产物,触发部署失败。
4. 其他常见问题修复
- 依赖缓存异常:可将preBuild的命令修改为
rm -rf node_modules package-lock.json && npm install,强制清除缓存重装依赖 - 构建被ESLint错误中断:如果项目开启了构建时ESLint校验,可在
next.config.js中添加以下配置临时跳过校验,排查是否为该原因导致:module.exports = { eslint: { ignoreDuringBuilds: true, }, }
内容的提问来源于stack exchange,提问作者Abdullah Mujahid
相关产品推荐
相关产品推荐

