装好 Node,只说明某个运行时已经存在;npm 能否使用、终端调用的是哪一份命令、包从哪里下载,还要分别检查。2018 年我在 CentOS 上用 yum 安装 Node,再尝试 cnpm,这几个问题当时很容易混在一起。
第一步:确认命令版本与来源
在类 Unix 终端可以先查看:
node --version
npm --version
command -v node
command -v npm
npm config get registry
某个发行版的软件包是否同时提供 npm,应查该发行版和软件源,不能仅凭 nodejs 包名断言。机器上也可能同时存在系统安装和版本管理器安装,版本输出正常不代表 IDE、服务进程或另一个终端使用同一路径。
Windows 可用 where.exe node、where.exe npm 查命令来源。修改 PATH 后要重新确认目标进程的环境,而不只是当前窗口。
npm、registry 和 cnpm 是三件事
npm 是包管理命令;registry 是取得包元数据的服务地址;cnpm 是另一套命令行工具。改变 registry 不要求把所有 npm 命令改写成 cnpm。
以 npm 10 配置说明 为参照,配置可来自命令行、环境变量和不同范围的 npmrc。排查时先看项目配置是否覆盖用户设置,作用域包是否指定独立 registry,以及锁文件记录的下载目标。
例如下面只为一次元数据查询显式指定官方公共包源,不修改持久配置:
npm view npm version --registry=https://registry.npmjs.org/
这条命令会联网读取元数据;需要访问授权和正常网络。看到公共包可查询,不代表企业私有包也能正常获取。
换源之前,先弄清失败在哪一步
解析域名、TLS、代理、鉴权、包不存在、压缩包下载和安装脚本都可能导致安装失败。只看到下载慢就全局换源,可能把私有包请求送往错误的服务。
2018 年使用过的镜像地址不再作为配置建议。不要粘贴完整 .npmrc、token 或全部 npm 配置;只保留脱敏后的目标地址、配置范围和具体错误。若需要修改,限定在明确项目并记录原值,确认锁文件和包完整性验证仍符合项目要求。