ubuntu 22.04 默认 apt 安装的 node.js 版本过旧(v12),易导致 esm 错误、require 报错或 npm install 卡死;推荐生产环境用 nodesource 安装 lts 版本,开发环境用 nvm 管理多版本,或手动解压二进制包实现隔离部署。

直接用 apt 或 yum 装出来的 nodejs 版本太旧(Ubuntu 22.04 默认是 v12,CentOS 7 是 v10),跑现代项目大概率报错:比如 ERR_UNSUPPORTED_ESM_URL_SCHEME、require is not defined,或者 npm install 卡死在 prebuild-install。别硬扛,换方式。
用 NodeSource 安装 LTS 版本(推荐生产环境)
NodeSource 提供官方维护的二进制包,版本可控、更新及时、无编译依赖,适合服务器长期运行。
- Ubuntu/Debian 执行:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -,再sudo apt install -y nodejs - RHEL/CentOS/Fedora 执行:
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -,再sudo yum install -y nodejs(CentOS 8+ 用dnf) - 装完立刻验证:
node -v应输出类似v20.12.2,npm -v≥10.2.2;低于这个 npm 版本可能无法安装带peerDependenciesMeta的包 - 注意:NodeSource 不会覆盖系统自带的
node命令冲突——它安装的是/usr/bin/node,和apt冲突时优先级由update-alternatives管理,但一般不会打架
用 nvm 管理多版本(开发机首选)
如果你要同时跑多个项目,有的用 node@18,有的必须 node@20,或需要快速验证兼容性,nvm 是唯一靠谱方案。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 安装命令固定:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash,然后source ~/.bashrc(zsh 用户用~/.zshrc) - 查可用 LTS:
nvm list-remote --lts,装最新 LTS:nvm install --lts;装指定版:nvm install 20.12.2 -
nvm use 20.12.2切换当前 shell 的 Node 版本;nvm alias default 20.12.2设为默认,新终端自动生效 - 坑点:nvm 安装的
node和npm是用户级路径(~/.nvm/versions/...),不写入/usr/bin,所以不能被 systemd 服务直接调用——部署服务时得用绝对路径,比如/home/deploy/.nvm/versions/node/v20.12.2/bin/node app.js
手动解压二进制包(无 root 权限 / 隔离部署)
当你没有 sudo,或想把 Node 环境和系统彻底隔离(比如 CI 构建机、容器外挂载),就下载官方 .tar.xz 包解压即用。
- 下载命令示例:
wget https://nodejs.org/dist/v20.12.2/node-v20.12.2-linux-x64.tar.xz - 解压必须用
tar -xf(不是tar -xzf):tar -xf node-v20.12.2-linux-x64.tar.xz -C /opt - 设全局命令有两种方式:
→ 软链接:sudo ln -s /opt/node-v20.12.2-linux-x64/bin/node /usr/local/bin/node(同理链npm)
→ 改PATH:export PATH="/opt/node-v20.12.2-linux-x64/bin:$PATH",加到~/.bashrc或服务脚本里 - 注意:
.tar.xz包里bin/下只有node和npm,没有npx——但npm@8+自带npx,只要npm能跑,npx就能用
真正容易被忽略的点是:无论哪种方式,npm config get prefix 的输出决定了全局模块(如 pm2、nodemon)装在哪。如果没配好权限或路径,npm install -g 会静默失败或写入用户目录导致其他用户调用不到。动手前先确认这个值是否合理,比反复重装 Node 重要得多。










