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);

正常情况下结果如下图:

相关推荐
RoyLin8 小时前
TypeScript设计模式:适配器模式
前端·后端·node.js
RoyLin13 小时前
TypeScript设计模式:迭代器模式
javascript·后端·node.js
轻松Ai享生活15 小时前
5 节课深入学习Linux Cgroups
linux
christine-rr16 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神55516 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆16 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
乌萨奇也要立志学C++16 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
前端双越老师17 小时前
2025 年还有前端不会 Nodejs ?
node.js·agent·全栈
獭.獭.18 小时前
Linux -- 信号【上】
linux·运维·服务器
hashiqimiya18 小时前
centos配置环境变量jdk
linux·运维·centos