AWS Amplify部署Next.js与React.js应用均失败:构建阶段提示找不到package.json文件
我之前也碰到过一模一样的问题!折腾了好半天终于摸清楚几个关键的排查和解决方向,你可以逐一试试:
检查Amplify的项目根目录配置
这是最常见的原因!如果你的package.json不在GitHub仓库的根目录(比如藏在my-app这类子文件夹里),Amplify默认会在仓库根目录找文件,自然会报找不到的错误。
解决方法:
进入Amplify控制台的「App settings」→「Build settings」,在「Build specification」里修改baseDirectory字段,或者直接编辑amplify.yml配置文件,确保构建命令先切换到正确的目录:frontend: phases: preBuild: commands: - cd 你的项目子文件夹名 && pnpm install build: commands: - cd 你的项目子文件夹名 && pnpm run build artifacts: # Next.js项目填这个 baseDirectory: 你的项目子文件夹名/.next # React项目换成下面这个 # baseDirectory: 你的项目子文件夹名/build files: - '**/*'确保构建环境安装了pnpm
Amplify的默认构建环境可能没有预装pnpm,直接跑pnpm命令不仅可能找不到包,还可能间接导致路径识别问题。你可以在preBuild阶段先安装pnpm:- curl -fsSL https://get.pnpm.io/install.sh | sh - - source ~/.bashrc把这两行加到
preBuild的commands最前面,再执行后续的安装和构建命令。确认GitHub仓库的文件提交状态
虽然你说本地有package.json,但还是要去GitHub仓库的目标分支(比如main)里确认一下:这个文件确实被提交了,而且路径和本地一致。别不小心把package.json加到.gitignore里了!清理Amplify构建缓存重试
有时候旧缓存会导致莫名其妙的路径识别错误。找到Amplify控制台里最近的失败构建记录,点击「Redeploy this version」,勾选「Clear build cache」后重新部署试试。
我当时就是因为项目放在子文件夹里,Amplify默认根目录不对导致的问题,改了baseDirectory就立刻搞定了。你先排查这几个点,应该能解决!
备注:内容来源于stack exchange,提问作者abc xyz

