Astro v3在AWS Amplify构建失败:缺失GLIBC_2.27/2.28版本
解决AWS Amplify(Amazon Linux 2)上Node.js 18.14.1的GLIBC版本不兼容问题
问题根源
Amazon Linux 2默认自带的GLIBC版本为2.26,而你使用的Node.js 18.14.1编译时依赖更高版本的GLIBC(2.27及2.28),导致运行时出现版本缺失错误。
解决方法
1. 切换到兼容的Node.js 18.x版本
Node.js官方从18.17.0开始,针对旧版Linux发行版(包括Amazon Linux 2)提供了兼容GLIBC 2.26的预编译二进制包。你可以直接在Amplify构建配置中指定该版本:
修改amplify.yml中的preBuild命令:
version: 1 frontend: phases: preBuild: commands: - nvm install 18.17.0 - nvm use 18.17.0 - npm ci
2. 使用NodeSource的兼容包安装Node.js
如果需要固定使用特定版本,可通过NodeSource的rpm包安装,这些包针对Amazon Linux 2做了适配:
在amplify.yml的preBuild阶段替换为以下命令:
version: 1 frontend: phases: preBuild: commands: - curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - - yum install -y nodejs - node -v # 确认安装的版本 - npm ci
3. 自定义构建镜像(进阶)
若上述方法无法满足需求,可创建基于Amazon Linux 2的自定义Docker镜像,手动升级GLIBC到所需版本,然后上传至AWS ECR,配置Amplify使用该自定义镜像。此方法需要容器相关经验,且需长期维护镜像。
验证建议
在本地使用Docker拉取amazonlinux:2镜像,模拟Amplify构建环境测试Node.js版本兼容性,避免反复触发Amplify构建浪费时间:
docker run -it amazonlinux:2 bash # 在容器内执行安装命令,验证Node.js是否能正常运行
内容的提问来源于stack exchange,提问作者xkeshav
相关产品推荐
相关产品推荐

