Amplify构建报错:缺失GLIBC_2.28(Node.js依赖)求解决方案
AWS Amplify构建失败解决方案(Node.js 20 + GLIBC版本不兼容)
问题现象
构建日志出现以下致命错误:
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
执行npm ci时直接终止构建,该问题在升级Next.js到14.0.4后出现。当前使用的amplify.yml配置如下:
version: 1 backend: phases: build: commands: - nvm install 20 - nvm use 20 - 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/**/*
错误原因
Node.js 20.x版本依赖GLIBC 2.27及以上版本,但AWS Amplify默认使用的Amazon Linux 2构建环境自带的GLIBC版本低于该要求,导致Node.js无法正常启动。
解决步骤
方案1:升级构建镜像到Amazon Linux 2023
Amazon Linux 2023内置的GLIBC版本满足Node.js 20的运行要求,修改amplify.yml添加镜像指定:
version: 1 build: # 指定使用Amazon Linux 2023构建镜像 image: amazonlinux2023 backend: phases: build: commands: - nvm install 20 - nvm use 20 - npm ci - npx amplify pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID frontend: phases: preBuild: commands: - nvm install 20 - nvm use 20 - npm ci build: commands: - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - node_modules/**/*
注意:前端preBuild阶段需同步添加Node版本切换命令,确保前后端环境一致。
方案2:降级Node.js到18.x
Next.js 14兼容Node.js 18.17+,若暂时不想升级构建镜像,可将Node版本降级到18.x,修改amplify.yml:
version: 1 backend: phases: build: commands: - nvm install 18 - nvm use 18 - npm ci - npx amplify pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID frontend: phases: preBuild: commands: - nvm install 18 - nvm use 18 - npm ci build: commands: - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - node_modules/**/*
验证操作
- 将修改后的
amplify.yml提交到代码仓库 - 触发Amplify重新构建
- 查看构建日志,确认GLIBC错误消失,构建流程正常完成
内容的提问来源于stack exchange,提问作者Anay
相关产品推荐
相关产品推荐

