昨天晚上我原本计划更新公众号,但被一件事“耽搁”了。和同事聊天时,她提到做了一个自动发红包的功能,这立刻引起了我的兴趣。她分享了几张核心功能的截图——原来这是自动化测试的一部分。回想起来,我一直在规模较小的团队工作,功能测试大多依赖测试人员手动点击APP或网页,对于大厂那种成熟的自动化测试流程,接触得并不多。
这次偶然的交流让我萌生了深入研究的念头。借助AI工具,我开始动手尝试编写自动化测试脚本,最终真的成功调通了自动发红包的功能。这感觉就像又点亮了一个技能点。未来,对于一些重复性的功能测试,完全可以用自动化来替代,省时省力。当然,前期需要投入时间去适配界面元素的坐标,如果页面功能变动频繁,维护起来也可能是个挑战。但无论如何,了解了自动化测试的基本原理后,总能在合适的地方用它来解放双手。毕竟,机器没有情绪,而让人类重复执行成百上千次相同的点击操作,难免会让人烦躁。想象一下,如果让你每天手动给5000个人发红包,别说心里烦不烦,手估计先酸了。所以,积极拥抱技术来提升效率,已经是一个很明显的趋势了。
好了,闲话说完,进入我们今天的正题。本文将围绕一个具体的工程问题展开:如何解决因Node.js版本过旧导致的npm兼容性问题,并最终在Linux服务器上成功部署新版本。
【关键词】升级node、安装nvm、本地打包、手动编译安装node
一、问题缘起与初步尝试
我遇到的情况是这样的:项目中的 npm 已升级到 v10.9.0,但服务器上的 Node.js 版本还停留在 v14。两者之间出现了兼容性问题,导致线上构建失败。最直接的解决方案,就是将 Node.js 升级到 v18 或更高版本。
第一步:尝试使用 nvm 升级 Node.js
我的第一反应是使用 Node.js 版本管理工具 nvm 来进行升级,操作步骤如下:
# 安装 nvm (Node 版本管理器)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# 下载并安装 Node.js(可能需要重启终端)
nvm install 18
# 验证环境中是否存在正确的 Node.js 版本
node -v # 应该打印 `v18.20.5`
# 验证环境中是否存在正确的 npm 版本
npm -v # 应该打印 `10.8.2`
第二步:安装 nvm 并切换版本
在服务器上,首先需要安装 nvm 工具本身:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
然而,事情并没有那么顺利。使用 nvm 安装 Node.js v18 后,项目中的其他一些组件出现了不兼容的情况。权衡之下,我决定先回退到原来的版本。
既然线上环境升级遇到阻碍,我便换了一个思路:能不能先在本地环境打包,然后把构建好的产物上传到服务器呢?
第三步:验证本地打包的可行性
我立刻在本地开发环境进行了尝试。本地安装的 Node.js 版本是 v22.11.0,npm 版本是 10.9.0,执行打包命令后,一切顺利。

图1:本地开发环境的 Node.js (v22.11.0) 与 npm (v10.9.0) 版本
本地打包成功,意味着只要服务器环境能与本地对齐,问题就可能解决。于是,接下来的目标变得明确:在服务器上手动安装与本地一致的 Node.js v22.11.0。
二、在Linux服务器上手动编译安装 Node.js v22.11.0
既然通过包管理器或 nvm 安装遇到了环境依赖问题,我决定采用最“踏实”的方式——手动下载源代码并编译安装。这对于运维和部署工作来说,也是一种重要的技能。
以下是详细的步骤:
a. 更新系统
首先,确保系统软件包是最新的。
sudo yum update -y
b. 安装必要的编译依赖
Node.js 的编译需要一些基础开发工具和库。
sudo yum install -y gcc make gcc-c++ openssl-devel wget
c. 创建并进入工作目录
为了管理清晰,我们创建一个专属目录。
mkdir -p /opt/nodejs/src
cd /opt/nodejs/src
d. 下载 Node.js 源代码
从官方镜像站下载指定版本的源代码包。这里我同时列出了 v20.9.0 和最终选择的 v22.11.0 的命令。
wget https://nodejs.org/dist/v20.9.0/node-v20.9.0.tar.gz
# 实际下载 v22.11.0
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0.tar.gz
下载完成后,可以在目录中看到压缩包。

图2:下载到服务器上的 Node.js v22.11.0 源代码压缩包
e. 解压源代码包
解压刚下载的压缩包,并进入解压后的目录。
tar zxvf node-v20.9.0.tar.gz
cd node-v20.9.0
注意:这里以 node-v20.9.0.tar.gz 为例,实际操作时应与你下载的版本名一致。
f. 配置编译环境
运行配置脚本,检查系统环境并生成编译所需的 Makefile。
./configure
g. 编译与安装
这个过程耗时最长,取决于服务器性能。使用 make 进行编译,然后使用 make install 进行安装。
make
sudo make install
安装完成后,你可以通过 node -v 和 npm -v 来验证新版本是否已生效。至此,服务器上的 Node.js 环境已经与本地开发环境保持一致,之前因版本不兼容导致的构建问题应迎刃而解。

《本文完》
技术之路常常如此,一个看似简单的“升级”需求,可能会牵扯出环境依赖、版本兼容等一系列问题。从尝试使用 nvm 快速切换,到退而求其次的本地打包方案,最终落脚到最根本的手动编译安装,这个过程本身也是一次有价值的排查和运维实践。希望这次记录能为你解决类似问题提供一条清晰的路径。如果你有更好的方法或不同的经验,欢迎在云栈社区与我们交流探讨。