前端自动化打包服务器无法安装高版本 Node.js v22 问题解决
问题:安装高版本 node,报错。
具体表现
当执行 node -v 命令时,系统提示多个 GLIBC_xxx 版本未找到,比如 GLIBCXX_3.4.21、GLIBC_2.27 等,这些是 node 程序运行所依赖的 Glibc 库的特定版本符号,当前系统安装的 Glibc 版本不满足 node 的要求,导致 node 无法正常运行。
可能的解决思路
- 升级系统 Glibc 版本:不过 Glibc 是系统核心库,升级操作风险较高,若操作不当可能导致系统不稳定甚至崩溃,需谨慎操作,且要确保升级的版本与系统其他组件兼容。
- 使用兼容的 Node.js 版本:查看当前系统 Glibc 版本(可通过 ldd --version 等命令查看),然后选择与该 Glibc 版本兼容的 Node.js 版本重新安装。
- 利用容器技术:如果系统环境较难调整,可使用 Docker 等容器技术,在容器内部配置满足 Node.js 运行要求的环境,将 Node.js 应用部署在容器中运行,避免与宿主系统的库版本冲突。
最终还是选择保守治疗,在 docker 容器内进行打包。
docker-compose.yml
version: '3'
services:node_package_22:image: node:22.18.0-alpinecontainer_name: node_package_22restart: 'no'volumes: - ./code:/code- ./dist:/code/dist- ./sh:/sh/command: sh /sh/run.sh
run.sh
cd /code# 更换源
npm config set registry https://registry.npmmirror.com# 安装 pnpm
npm install pnpm -g# 设置镜像源(可忽略)
pnpm config set registry https://registry.npmmirror.com# 安装依赖
pnpm install# 项目打包
pnpm run build
自动化部署
这里将 DevOps 服务器编译的步骤放在了程序运行的服务器上了。
# 开始使用 docker 打包
cd /home/devops/node-package-22.18.0
chmod -R 777 /home/devops/node-package-22.18.0/code
docker-compose down && docker-compose up
# 打包结束# 包复制:node 临时目录 -> 前端部署路径
rm -rf /home/halberd/halberd_ui/html/dist/*
cp -rf /home/devops/node-package-22.18.0/dist/* /home/halberd/halberd_ui/html/dist/
rm -rf /home/devops/node-package-22.18.0/dist/*# 重启服务
chmod -R 777 /home/halberd/halberd_ui/html/dist
cd /home/halberd/halberd_ui
docker-compose down && docker-compose up -d && docker-compose ps