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

正常情况下结果如下图:

相关推荐
小成202303202652 小时前
Linux高级02
linux·开发语言
mounter6252 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==3 小时前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长3 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5383 小时前
Linux环境变量
linux·运维·服务器
pluvium273 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员3 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
CHHC18804 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
云栖梦泽5 小时前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++
si莉亚6 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源