npm ERR! FetchError: request to localhost 4873 zrender
problem
verdaccio搭建私服,本地机器作为客户端使用localhost:4873或者ip:4873,拉取npm包,或者发布npm包 都正常
但是换台新机器作为客户端,使用server ip地址
执行命令是:npm install --registry http://192.168.43.213:4873/
拉取npm包总是失败,报错信息是
npm ERR! FetchError: request to http://localhost:4873/zrender/-/zrender-5.4.4.tgz failed, reason:
npm ERR! at ClientRequest.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14)
npm ERR! at ClientRequest.emit (node:events:514:28)
npm ERR! at _destroy (node:_http_client:875:13)
npm ERR! at onSocketNT (node:_http_client:895:5)
npm ERR! at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
reason
很奇怪,server端监听的是ip地址,客户端使用的也是ip地址为什么不行?
solution
网上搜索没找到办法
- 搜索错误信息: 没人遇到
- xxx github issues: issues里没有
- xxx 遇到的问题:没有遇到
- 网络问题: 关闭代理 没有作用
自己的尝试
// 方法1 将代理设置为空: 不行
npm config set proxy null
npm config set https-proxy null
npm config list // https-proxy = null proxy = null
// 方法2 将代理设置为淘宝: 不行
npm config set proxy https://registry.npm.taobao.org/
npm config set https-proxy https://registry.npm.taobao.org/
npm config list // https-proxy 和 proxy 不为空
// 方法3 指定ip源 (为什么会指定去localhost呢?): 不行
npm install --registry http://192.168.43.213:4873/
// 方法4 关闭设备代理 : 不行
// 方法5 server端配置ng,客户端使用域名访问? 不行
// 服务端使用ng
server {
listen 80;
server_name npm.company.net;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://192.168.43.213:4873/;
}
}
// 客户端步骤
1. 关闭代理
2. 配置 /etc/host: 192.168.43.213 npm.company.net
3. 浏览器访问 http://npm.company.net/ 网页无法登录因为it violates the document's Content Security Policy. 但是不影响控制台使用
npm config set registry=http://npm.company.net/
npm login
npm instsall
// 方法6 删除lock文件 不行
rm yarn.lock
rm package-lock.json
// 方法6 发布包的地方制定源 不行
npm publish --registry http://192.168.43.213:4873/
// 方法7 server修改端口号 4873 改为 4888 可行 ✅
// server使用ng代理80端口也可行 注意关闭本地代理❗
npm install --registry http://192.168.43.213:4888/
npm install --registry http://npm.company.net/