在中国网络环境下,GitHub 并不是始终能够正常访问的站点。除了日常下载代码、安装依赖可能失败,部署 Multica 这类依赖 GitHub 资源的工具时,也可能在拉取仓库或安装组件的阶段遇到问题。
网上常见的解决方案是配置代理,但并不是每台服务器都方便配置网络代理;随意使用网络上来源不明的节点,也可能带来账号、代码和服务器流量被监控等安全隐患。因此,下面只记录一些实际使用后相对可行、配置成本较低的方式。涉及生产环境时,仍然建议优先使用公司批准的网络出口、可信的镜像或自建代理。
使用国内源安装 nvm
官方 nvm 安装脚本通常托管在 GitHub。在无法稳定访问 GitHub 的网络环境中,可以尝试使用 nvm-cn 提供的安装脚本:
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"
安装完成后,重新打开终端,或按照脚本提示加载 Shell 配置文件,然后确认 nvm 是否可用:
nvm --version
接下来可以安装并切换 Node.js 版本:
nvm install --lts
nvm use --lts
node --version
npm --version
通过这种方式安装的 nvm 本身会使用国内的 NPM 源,因此通常不需要再单独担心 NPM 包下载问题。实际使用中,如果某个包的源代码或二进制文件仍然托管在 GitHub,安装过程依旧可能受 GitHub 访问情况影响。
Clone GitHub 仓库
如果只是需要 clone GitHub 上的资源,可以在目标 GitHub 地址前增加国内代理地址。例如,clone Multica 仓库:
git clone --depth 1 https://gh-proxy.com/https://github.com/multica-ai/multica.git
其中 --depth 1 只拉取最近的一次提交,可以减少下载量和失败概率。如果 clone 其它 GitHub 仓库,只需要把命令中的 GitHub 地址替换成目标地址:
git clone --depth 1 https://gh-proxy.com/https://github.com/用户名/仓库名.git
代理服务属于第三方基础设施,稳定性、可用性和安全策略都可能变化。不要通过不可信代理传输私有仓库、访问令牌或其它敏感信息;对于私有代码,优先选择可信的镜像、内部制品库或经过审核的网络方案。
写在最后
在中国网络环境下,Node.js 和 NPM 的安装不一定需要先解决完整的代理配置:使用国内源安装 nvm,可以覆盖大多数 Node.js 版本管理和 NPM 包安装场景;需要获取公开 GitHub 仓库时,再按需使用可信的国内代理。
不过,这些方案不能保证长期稳定。遇到下载失败时,先区分是 NPM 源、GitHub 代理,还是某个依赖自己的下载地址出了问题,再选择替代源或网络出口,会比盲目更换节点更安全。