【node】centos7安装nodejs20

问题

nodejs v18 以上版本,在 centos7 下因 glibc 版本问题 无法使用。

node v20.9.0 报错信息:

1
2
3
4
5
6
7
[root@localhost bin]# node --version
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)

centos7 glibc 版本:

1
2
3
4
5
6
[root@localhost ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 编写。

GLIBC

‌glibc 的全称是 GNU C Library;也就是 GNU 发布的 c 运行库,是 linux 系统中最底层的 api。

解决方案

网上很多文章都需要升级 glibc 版本,了解到它是较为底层的库,在生产环境的系统不推荐,也不敢升级!

GitHub 上有个项目提供了 Node.js 的非官方二进制文件 https://github.com/nodejs/unofficial-builds 而且 nodejs 新版官网也提到了

下载

下载 node-v20.9.0

下载地址: https://unofficial-builds.nodejs.org/download/release/

报错的是 glibc 版本问题,下载 glibc-217 版本的 nodejs

1
wget -P /usr/local https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.gz

解压

进入 /usr/local 目录下, 解压

1
2
cd /usr/local
tar zxvf node-v20.9.0-linux-x64-glibc-217.tar.gz

配置环境变量

1
vim /etc/profile

编辑 /etc/profile 文件,添加如下内容:

1
2
# nodejs
export PATH=/usr/local/node-v20.9.0-linux-x64-glibc-217/bin:$PATH

重新加载环境变量

1
source /etc/profile

完成

常见问题

xdg-open 报错

在运行 vue 项目时候发生 xdg-open 报错,需要安装 xdg-utils

1
sudo yum install xdg-utils

node 运行时内存不足

当内存小于 4G 的时候,node v20 运行时会报内存运行不足的错,如果大于 4G 还报错,可尝试设置给 node 设置内存大小(设置时参考实际机器的内存大小)。

设置内存运行脚本:

1
node --max_old_space_size=4096 build.js

报错:

1
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory