使用AWS Amplify Gen2部署Next.js14时GLIBC版本错误致构建失败
解决AWS Amplify Gen2部署Next.js14时的GLIBC版本错误
问题分析
你遇到的GLIBC_2.27/2.28缺失错误,核心原因是手动通过nvm安装的Node.js二进制包与amplify:al2023镜像的系统库不兼容。al2023镜像自带的GLIBC版本高于2.28,但nvm默认安装的Node包可能是针对其他发行版(如Ubuntu)编译的,依赖特定版本的GLIBC符号,导致运行时匹配失败。
解决方案
方案1:移除手动nvm命令,使用Amplify内置Node版本
amplify:al2023镜像已经预装了适配系统的Node.js,无需手动通过nvm安装/切换版本。修改你的amplify.yml配置如下:
version: 1 backend: phases: build: commands: - npm ci - npx amplify pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID frontend: phases: preBuild: commands: - npm ci build: commands: - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - node_modules/**/* image: buildImage: 'amplify:al2023' env: variables: NODE_VERSION: 20
- 通过
env.variables.NODE_VERSION指定所需Node版本,Amplify会自动加载适配al2023的对应版本,避免GLIBC依赖冲突。
方案2:若必须使用nvm,强制Node使用系统库
如果一定要保留nvm命令,安装Node时添加--system-libs参数,让Node依赖系统自带的GLIBC:
修改backend阶段的命令:
backend: phases: build: commands: - nvm install 20 --system-libs - nvm use 20 - npm ci - npx amplify pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID
方案3:清理构建缓存
旧缓存可能残留了不兼容的依赖或Node二进制文件,在Amplify控制台的构建页面点击清理缓存并重新构建,彻底清除旧缓存后重试。
补充说明
- 避免在amplify.yml中手动管理Node版本,优先使用Amplify镜像自带的版本管理机制,这是最稳定的方式。
- 若仍有依赖包报错GLIBC问题,检查是否有第三方依赖使用了预编译二进制包,可尝试删除
package-lock.json后重新安装,或替换为纯JS实现的替代包。
内容的提问来源于stack exchange,提问作者Corvo
相关产品推荐
相关产品推荐

