CentOS安装Node.js以及JSDOM跳坑记

笔者在一台 CentOS 7.9 的服务器上使用常规的安装命令:sudo yum install node 来安装 Node.js,到最后系统提示:

bash 复制代码
Error: Package: 2:nodejs-20.14.0-1nodesource.x86_64 (nodesource-nodejs)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

此时运行 npm -vnode -v 都报错:

bash 复制代码
node: relocation error: /lib64/libnode.so.93: 
symbol FIPS_selftest, version OPENSSL_1_1_0g not defined in file libcrypto.so.1.1 with link time reference

当前 Node.js 的最新版是21,看来又是低版本的 CentOS 水土不服的顽疾造成的。既然系统不支持最新版的 Node.js,那就只能退而求次选择低版本的 Node.js。

解决办法:通过nvm(Node.js虚拟版本管理器)选择低版本16.11.1安装

bash 复制代码
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.bashrc
nvm install 16.11.1
验证安装:

运行 node -v 返回:v16.11.1

运行 npm -v 返回:v8.0.0

说明安装成功。

Node.js v16.11.1 安装 JSDOM 报错问题

运行 npm install jsdom -g 时提示很多版本过期的信息,如:

bash 复制代码
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'jsdom@24.1.0',
npm WARN EBADENGINE   required: { node: '>=18' },
npm WARN EBADENGINE   current: { node: 'v16.11.1', npm: '8.0.0' }
npm WARN EBADENGINE }
......

在安装 JSDOM 之前,建议全局安装npx工具以确保版本管理的简易性:

bash 复制代码
npm install -g npx

为了使 JSDOM 能适应在 Node.js v16.11.1,只能选择安装旧版本 JSDOM,如16.x版,命令如下:

bash 复制代码
npm install jsdom@16.x -g

注:jsdom后面加上 @16.x,而且这里的 x 就是字母 x,不必改为具体的数字

验证安装:

1. 运行 npm list -g
2. 运行 node,在 Node.js 里输入下列语句:
javascript 复制代码
const { JSDOM } = require('jsdom');
const dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`);
const window = dom.window;
const document = window.document;
console.log(window);
console.log(document);

正常情况下结果如下图:

相关推荐
两斤半11 分钟前
Debian TTY环境乱码
linux·debian
xmode29 分钟前
centos7.9安装ffmpeg6.1和NASM、Yasm、x264、x265、fdk-aac、lame、opus解码器
ffmpeg·centos
还是奇怪1 小时前
Linux - 安全排查 2
linux·运维·安全
tan77º3 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
czhc11400756633 小时前
Linux 76 rsync
linux·运维·python
蓝易云4 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
花落已飘5 小时前
多线程 vs 异步
linux·网络·系统架构
PanZonghui5 小时前
Centos项目部署之Nginx部署项目
linux·nginx
觅_6 小时前
Node.js 的线程模型
node.js
码出钞能力6 小时前
linux内核模块的查看
linux·运维·服务器