Ubuntu 22.04 默认 apt 安装的 Node.js 版本过旧(v12),易导致 ESM 错误、require 报错或 npm install 卡死;推荐生产环境用 NodeSource 安装 LTS 版本,开发环境用 nvm 管理多版本,或手动解压二进制包实现隔离部署。
直接用
或
装出来的
版本太旧(Ubuntu 22.04 默认是 v12,CentOS 7 是 v10),跑现代项目大概率报错:比如
、
,或者
卡死在
。别硬扛,换方式。
用 NodeSource 安装 LTS 版本(推荐生产环境)
NodeSource 提供官方维护的二进制包,版本可控、更新及时、无编译依赖,适合服务器长期运行。
Ubuntu/Debian 执行:
,再
RHEL/CentOS/Fedora 执行:
,再
(CentOS 8+ 用
)
装完立刻验证:
应输出类似
,
≥
;低于这个 npm 版本可能无法安装带
的包
注意:NodeSource 不会覆盖系统自带的
命令冲突——它安装的是
,和
冲突时优先级由
管理,但一般不会打架
用 nvm 管理多版本(开发机首选)
如果你要同时跑多个项目,有的用
,有的必须
,或需要快速验证兼容性,
是唯一靠谱方案。
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
安装命令固定:
,然后
(zsh 用户用
)
查可用 LTS:
,装最新 LTS:
;装指定版:
切换当前 shell 的 Node 版本;
设为默认,新终端自动生效
坑点:nvm 安装的
和
是用户级路径(
),不写入
,所以不能被 systemd 服务直接调用——部署服务时得用绝对路径,比如
手动解压二进制包(无 root 权限 / 隔离部署)
当你没有
,或想把 Node 环境和系统彻底隔离(比如 CI 构建机、容器外挂载),就下载官方
包解压即用。
下载命令示例:
解压必须用
(不是
):
设全局命令有两种方式:
→ 软链接:
(同理链
)
→ 改
:
,加到
或服务脚本里
注意:
包里
下只有
和
,没有
——但
自带
,只要
能跑,
就能用
真正容易被忽略的点是:无论哪种方式,
的输出决定了全局模块(如
、
)装在哪。如果没配好权限或路径,
会静默失败或写入用户目录导致其他用户调用不到。动手前先确认这个值是否合理,比反复重装 Node 重要得多。
aptyumnodejsERR_UNSUPPORTED_ESM_URL_SCHEMErequire is not definednpm installprebuild-installcurl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -sudo apt install -y nodejscurl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -sudo yum install -y nodejsdnfnode -vv20.12.2npm -v10.2.2peerDependenciesMetanode/usr/bin/nodeaptupdate-alternativesnode@18node@20nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashsource ~/.bashrc~/.zshrcnvm list-remote --ltsnvm install --ltsnvm install 20.12.2nvm use 20.12.2nvm alias default 20.12.2nodenpm~/.nvm/versions/.../usr/bin/home/deploy/.nvm/versions/node/v20.12.2/bin/node app.jssudo.tar.xzwget https://nodejs.org/dist/v20.12.2/node-v20.12.2-linux-x64.tar.xztar -xftar -xzftar -xf node-v20.12.2-linux-x64.tar.xz -C /optsudo ln -s /opt/node-v20.12.2-linux-x64/bin/node /usr/local/bin/nodenpmPATHexport PATH="/opt/node-v20.12.2-linux-x64/bin:$PATH"~/.bashrc.tar.xzbin/nodenpmnpxnpm@8+npxnpmnpxnpm config get prefixpm2nodemonnpm install -g