我遇到了一个大问题,npm 无法在数据中心的虚拟机上安装任何内容,因为我不断收到 ECONNRESET 失败消息。
我已经尝试将注册表从http设置为https并再次返回,没有任何更改,我什至无法升级npm而不失败。
我已经在这里呆了一天了,但没有得到任何结果,因此提出请求。
如果这有什么区别的话,我最终会尝试使用 mup 安装流星应用程序。
最后一次尝试的输出是
taralga-infolite% npm install npm@latest -g
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! System Linux 3.13.0-74-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "npm@latest" "-g"
npm ERR! cwd /home/pnunn
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! syscall read
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/pnunn/npm-debug.log
npm ERR! not ok code 0
日志文件是
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', 'npm@latest', '-g' ]
2 info using [email protected]
3 info using [email protected]
4 verbose node symlink /usr/bin/node
5 verbose cache add [ 'npm@latest', null ]
6 verbose cache add name=undefined spec="npm@latest" args=["npm@latest",null]
7 verbose parsed url { protocol: null,
7 verbose parsed url slashes: null,
7 verbose parsed url auth: null,
7 verbose parsed url host: null,
7 verbose parsed url port: null,
7 verbose parsed url hostname: null,
7 verbose parsed url hash: null,
7 verbose parsed url search: null,
7 verbose parsed url query: null,
7 verbose parsed url pathname: 'npm@latest',
7 verbose parsed url path: 'npm@latest',
7 verbose parsed url href: 'npm@latest' }
8 verbose cache add name="npm" spec="latest" args=["npm","latest"]
9 verbose parsed url { protocol: null,
9 verbose parsed url slashes: null,
9 verbose parsed url auth: null,
9 verbose parsed url host: null,
9 verbose parsed url port: null,
9 verbose parsed url hostname: null,
9 verbose parsed url hash: null,
9 verbose parsed url search: null,
9 verbose parsed url query: null,
9 verbose parsed url pathname: 'latest',
9 verbose parsed url path: 'latest',
9 verbose parsed url href: 'latest' }
10 verbose addNamed [ 'npm', 'latest' ]
11 verbose addNamed [ null, null ]
12 silly lockFile 588f5fcc-npm-latest npm@latest
13 verbose lock npm@latest /home/pnunn/.npm/588f5fcc-npm-latest.lock
14 info addNameTag [ 'npm', 'latest' ]
15 verbose request where is /npm
16 verbose request registry http://registry.npmjs.org/
17 verbose request id 08cd751c52e5f075
18 verbose url raw /npm
19 verbose url resolving [ 'http://registry.npmjs.org/', './npm' ]
20 verbose url resolved http://registry.npmjs.org/npm
21 verbose request where is http://registry.npmjs.org/npm
22 info trying registry request attempt 1 at 13:51:28
23 http GET http://registry.npmjs.org/npm
24 info retry will retry, error on last attempt: Error: read ECONNRESET
25 info trying registry request attempt 2 at 13:51:38
26 http GET http://registry.npmjs.org/npm
27 info retry will retry, error on last attempt: Error: read ECONNRESET
28 info trying registry request attempt 3 at 13:52:38
29 http GET http://registry.npmjs.org/npm
30 silly lockFile 588f5fcc-npm-latest npm@latest
31 silly lockFile 588f5fcc-npm-latest npm@latest
32 error network read ECONNRESET
32 error network This is most likely not a problem with npm itself
32 error network and is related to network connectivity.
32 error network In most cases you are behind a proxy or have bad network settings.
32 error network
32 error network If you are behind a proxy, please make sure that the
32 error network 'proxy' config is set properly. See: 'npm help config'
33 error System Linux 3.13.0-74-generic
34 error command "/usr/bin/node" "/usr/bin/npm" "install" "npm@latest" "-g"
35 error cwd /home/pnunn
36 error node -v v0.10.36
37 error npm -v 1.4.28
38 error syscall read
39 error code ECONNRESET
40 error errno ECONNRESET
41 verbose exit [ 1, true ]
如果我尝试 npm install underscore 或 npm install server (这是 mup 安装失败的两个当前软件包),我会得到基本上相同的结果。
我已经对registry.npmjs.org运行了tracert(实际上是mtr),并且完全没有丢包。
还有什么建议可以尝试吗?
Ta
彼得。
终于找到了一种方法来完成这项工作。
事实证明答案有两个……首先,将 npm 更新到最新版本。 要在我的系统上执行此操作,我必须这样做
sudo mv /usr/bin/npm /usr/bin/npm.old
sudo /usr/bin/npm.old install npm -g
然后更改注册表以使用镜像并在全局范围内执行此操作(我花了很长时间才发现我错过了配置中的 -g 标志)
sudo npm config set registry https://skimdb.npmjs.com/registry -g
我还将重试次数增加到10次
sudo npm config set fetch-retries 10 -g
我的 /etc/npmrc 文件现在是
registry=https://skimdb.npmjs.com/registry
fetch-retries=10
这实际上是在 Linux 系统上设置这些的更简单的方法。
mup 需要一段时间来部署站点,但至少现在它可以可靠地工作。默认的 npm 注册表肯定有问题。我使用 wget 下载了 npm 遇到问题的许多 .tgz 软件包,并且需要最多 10 次尝试才能获得服务器未立即重置的连接。镜子看起来稳定多了。
这很可能是您的连接和代理设置的问题。我挣扎了很多,终于得出了一个结论。当我发布这个答案时,我现在在中国,这里我们必须经常更换VPN。这就是我的代理可能搞砸的原因。我想做 npx create-react-app [my-app],但是在安装 React-dom 时它被卡住了。 无论如何,我使用了以下顺序并解决了我的问题。
第 1 步禁用代理
npm config rm proxy
npm config rm https-proxy
步骤 2 配置代理设置
npm config set proxy http://[Your Computer Proxy Ip Address]:[Port]
npm config set https-proxy http://[Your Computer Proxy Ip Address]:[Port]
第 3 步清除 npm 缓存
npm cache clean --force
第 4 步更新 npm
npm install -g npm@latest
我希望它能够解决与连接问题相关的任何问题!