问题一:
主要是在执行 npm install 过程中遇到:
/usr/bin/git ls-remote ssh://git@github.com/nhn/raphael.git
Permission denied (publickey)
由于通过 ssh:// 访问异常,但是通过:
/usr/bin/git ls-remote http://git@github.com/nhn/raphael.git 执行没问题
也就是说通过 git config 将 ssh:// 替换成 http:// 就能解决:
执行指令:
sudo git config --global url."http://".insteadOf ssh://
问题二:
Error: EACCES: permission denied, access '/data/vue-element-admin'
这个是依赖超级权限问题,需要通过:
sudo npm install 解决
在执行 sudo npm install 之前,需要检查 sudo git config --global 的环境问题:
也即是说,你需要通过执行:
sudo git config --global --list
最少看到以下三个配置,才安装成功:
url.https://.insteadof=git://
url.http://.insteadof=ssh://
http.sslverify=false
如何设置上述三个配置:
sudo git config --global url."https://".insteadOf git://
sudo git config --global url."http://".insteadOf ssh://
sudo git config --global http.sslverify false
如果是在sudo超级权限下 sudo npm install,上面3个指令也必须用 sudo 前缀执行
问题三:
npm ERR! /usr/bin/git ls-remote -h -t git://github.com/adobe-webplatform/eve.git
npm ERR!
npm ERR! fatal: unable to connect to github.com:
npm ERR! github.com[0: 20.205.243.166]: errno=Connection refused
在超级和非超级权限下,发现用 http:// 替换 git:// 出现上述问题,也即是说必须要通过 https://去替代 git:// 才可以正常访问:
sudo git config --global url."https://".insteadOf git://
这样在使用 https:// 不行的情况下,会尝试使用 http:// 去再次尝试
所以最终配置如下,执行 sudo git config --global --list
http.sslverify=false
url.https://.insteadof=git://
url.http://.insteadof=ssh://
问题四:
npm ERR! network timeout at: https://registry.npmjs.org/screenfull
小技巧:
因为执行 sudo npm install 整个过程比较久,可以单独拿出报错的执行语句执行,如:
sudo /usr/bin/git ls-remote -h -t git://github.com/adobe-webplatform/eve.git
去检查上述替换是否生效
git 指令 访问 github.com 非常不稳定,也会容易导致上述拒绝访问,所以需要合理上网,让其网络访问稳定,需要指定代理:
http
sudo git config --global http.proxy http://127.0.0.1:7890(自己代理的端口号)
sudo git config --global https.proxy https://127.0.0.1:7890(自己代理的端口号)
ssh
sudo git config --global http.proxy 'socks5://127.0.0.1:1080'
sudo git config --global https.proxy 'socks5://127.0.0.1:1080'
为git设置了代理,在命令行执行 sudo /usr/bin/gi ls-remote -h -t git://github.com/adobe-webxxx 能够成功连到代理,但是在 sudo npm install 里面执行同一个指令,却无法正常连接git配置的代理,所以还需要指定 npm 的代理:
sudo npm config set proxy=http://server:port
sudo npm config set https-proxy http://server:port
设置了上述还不生效的话,就需要考虑下述的指令:
如果上述反复设置 sudo git config --global url."https://".insteadOf git://,在执行 npm install 中不生效,而在外部终端执行却生效,就需要执行:
sudo npm cache clean --force
sudo npm cache clear --force
发现清理了 npm cache 后,上述 git config 相关设置,就可以在 npm install 执行中生效了
提供大家遇到这个问题的一些讨论:
https://github.com/PanJiaChen/vue-element-admin/issues/3859
如果尝试上述所有方法都不行,那就安装个 nvm 去管理多个 node 版本,通过 nvm ls-remote
查找最新的node版本去安装, 例如我写这个文章的时候,最新版本是:20.2.0,执行指令:
nvm install 20.2.0
后面再去执行 npm install --registry=https://registry.npmmirror.com 就没遇到上述所有的问题
当然会遇到 package.json 和 node_modules 需要权限的问题,这个可以通过 chown -v 修改文件夹权限问题,由于 npm install 过程中,需要访问 GitHub,所以需要通过 git config --global 设置代理,如:
git config --global http.https://github.com.proxy http://your-ip:your-port
git config --global https.https://github.com.proxy https://your-ip:your-port
如果 npm run dev 遇到 ERR_OSSL_EVP_UNSUPPORTED 报错,又需要设置环境变量:
export NODE_OPTIONS=--openssl-legacy-provider
重新执行 npm run dev 就没有其他异常!!真心累弄这个 npm 的环境;