npm不起作用-“读取ECONNRESET”


164

我在使用npm时遇到问题,无法安装任何程序。这是错误消息:

C:\Windows\system32>npm install -g yo
npm http GET https://registry.npmjs.org/yo
npm http GET https://registry.npmjs.org/yo
npm http GET https://registry.npmjs.org/yo
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 settin
gs.
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 Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "yo"
npm ERR! cwd C:\Windows\system32
npm ERR! node -v v0.10.17
npm ERR! npm -v 1.3.8
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!     C:\Windows\system32\npm-debug.log
npm ERR! not ok code 0

知道为什么吗?这是我的网络设置,似乎我没有配置任何代理。我还禁用了所有防火墙。

在此处输入图片说明


您是否可以在浏览器registry.npmjs.org/yo中访问此页面?
thefourtheye

看来他们的SSL证书已过期!
Kushagra Gour

@thefourtheye是的,我可以访问该链接
Omar

npm不安装任何东西。此问题并非在安装Express时独有
Omar

您可能需要检查C:\ Windows \ system32 \ npm-debug.log,此文件将包含更准确的信息来解决您的问题。
南达·库玛

Answers:


326

npm config set registry http://registry.npmjs.org/

因此npm要求httpurl而不是https

然后尝试相同的npm install命令


19
您能否也提供一些解释,将非常有帮助。
Rishul Matta 2014年

31
此“修补程序”容易受到中间人攻击。我不会将其用于生产。
thesmart 2016年

3
问题很容易是您被ISP或公司的防火墙/代理阻止访问了该网站。使用上面的方法更快,更容易,但是它也不安全,因为它不能验证您是否连接到正确的网站。要检查您是否被阻止,只需在浏览器中转到registry.npmjs.org。您应该找回一些文字。
马龙

1
哈哈...。我几个月来一直在努力克服这个问题。我只是禁用VPN,获取软件包,然后重新登录。谢谢你 所有其他问题只是您的代理地址/端口错误,或者(在这种情况下)您的代理未配置为侦听HTTPS流量。
voidzero

1
我知道它可能并不安全,但是请继续-我通过Angular CLI尝试一切以摆脱ECONNRESET错误,同时通过Angular CLI创建新的angular 4应用程序,并且该解决方案仅适用。创建新项目后,您可以切换回https。无论如何,@ mithunsatheesh再次感谢您。
–born2fr4g

38

您可能需要检查NPM代理设置并删除它。

npm config get proxy
npm config rm proxy
npm config rm https-proxy

可能有人希望全新安装的NodeJS + NPM不会配置代理。奇怪的是,我的确定义了一个代理,指向IP和端口3128。删除代理就可以了。


我试图使用cmd在Angular项目中安装jquery-npm install jquery但是有一个代理错误,现在尝试此解决方案时可以解决。
Mohammed Amen,


11

在家删除您的代理设置并在Office网络上打开,这可能很烦人,但是它对我有用:

npm config set proxy http://xxx.xxx.xxx.4:8080   
npm config set https-proxy http://xxx.xxx.xxx.4:8080

npm config rm proxy   
npm config rm https-proxy

最后一点对我有用-我检查了我的.npmrc文件,删除了代理之后,旧的https代理仍然存在
Jayx

这是可行的,但是每当没有代理就转到其他网络时,如何取消配置或重新配置为默认值?
DV Yogesh

9

这可能是由于使用npm安装任何东西sudo导致的-导致缓存中的文件由root拥有,从而导致此问题。您可以通过运行以下命令进行修复:

sudo rm -rf ~/.npm

删除缓存。然后尝试再次执行任何操作,确保您永远不要sudo与之一起使用npm(否则问题可能会再次出现)。

很多更多的信息:npm抛出错误而没有sudo


忘记了需要提升管理员来执行npm -g update(就像我安装时所做的那样)。谢谢。
乔治

6
ECONNRESET到底是怎么引起的?没错,它sudo可以用新颖的方式破坏事物,但是导致注册表服务器断开连接有点令人难以置信。
zigg '16


3

使npm在代理网络中正常工作的三件事。

此设置npm注册表,默认情况下可能需要使用https。

npm配置设置注册表“ http://registry.npmjs.org/

其次是系统中的两个代理服务器。如果您的组织使用代理还是您。

npm config设置代理“ http:// username:password @ proxy-url:proxy-port

npm config设置https-proxy“ http:// username:password @ proxy-url:proxy-port

您还可以通过以下方法检查它们是否已设置

npm config获取https-proxy

对于所有值。


它没有显示任何错误,但安装停滞在行-loadRequestedDeps:仍然安装loadAllDepsIntoIdealTree
RSB

这是另一个问题。您的代理问题已解决。愿这短暂的事情stackoverflow.com/questions/40874237/...
人士Himanshu夏尔马

2

我已经尝试过这里和其他页面上发布的几乎所有方法,但是没有用。以下是我按顺序执行的命令,我鼓励您尝试一下,因为它对许多人有效(但对我而言无效):

  • npm config rm proxy
  • npm config rm https-proxy
  • npm config set https-proxy https://username:password@proxy.company.com:6050
  • npm config set proxy http://username:password@proxy.company.com:6050
  • npm config set registry http://registry.npmjs.org/

然后尝试安装该软件包npm install -g express,但失败了。

但是,当我尝试运行npm install npm@latest -g它时,它奇迹般地执行并安装良好!
然后npm install -g express再次运行也很好。

TL; DR:将npm更新到最新版本解决了该问题(当前为6.0.1)


1

在工作中,我必须加载浏览器并浏览一个网页(这使我可以通过我们的网络过滤器进行身份验证)。然后,我重试了命令,它成功运行了。


2
不能100%地确定这是否对我有所帮助,或者只是一个巧合,但是在Firefox中导航到registry.npmjs.org会以某种方式帮助npm下一次安装工作。我没有任何类型的网络过滤器软件。
TalkLittle

1

这是一个老问题,但无论如何。

当我尝试部署到heroku时遇到了这个问题,而对我npm有用的修复程序是更新所使用的版本。我的版本为2.xx,我更新为3.xx


1

如果您保存的承载令牌现在无效,那么您也可能会遇到此错误。我在使用私有存储库时遇到过这种情况,在该存储库中擦除并重置了帐户,使令牌无效。尽管您的存储库可能不需要身份验证,但是如果您具有来自先前登录的令牌,它将被传递,如果无效,则您的连接将被关闭。

您可以通过使用新的用户名和密码再次登录,或者大概通过npm注销来解决此问题。


1

我不想切换到http作为注册表,对我有用的是从最新的Node版本降级到LTS版本(截至目前为6.x)。


1

我有npm抛出此错误的问题。

因此,基本上,每当抛出错误时,我要么使用
git 手动安装,要么等待并安装指定的版本,例如:

npm install resolve@^1.1.6

单独运行时:

npm install resolve

没有工作。

我将node.js从7更新为8,npm安装顺利进行。

我认为也许是版本7引起了这个问题,因为@luschn降级为6,所以他也没有使用7。

也许注册表本身在返回错误时没有在状态页上显示问题,因为一段时间后,我可以安装这个破损的软件包,然后继续npm install安装其余的软件包。


1

没有代理,我在本地家庭网络上也遇到了同样的问题。此主题中的其他答案对我不起作用。我最终所做的是使用yarn,它可以与互换使用npm

yarn add

直到今天,我仍然不知道为什么我的npm仍然无法正常工作。我肯定知道这是我的Wi-Fi的问题,因为当我连接到LTE时,从智能手机广播的互联网npm install又可以正常工作。这可能与路由器设置有关(当我升级互联网速度并且ISP工作人员将旧路由器替换为新路由器时,问题就开始了)。


1

尝试npmOracle VirtualBox中模拟的系统上运行时遇到相同的问题。我通过在网络适配器属性中添加Google DNS地址来解决此问题。

网络适​​配器属性> IPv4属性>首选DNS地址:8.8.8.8


1

我遇到了同样的问题,但是这些解决方案均无法正常工作。最后,我通过npm兼容的yarn来安装软件包。根据官方网站:

对于大多数用户而言,从npm迁移应该是一个相当简单的过程。Yarn可以使用与npm相同的package.json格式,并且可以从npm注册表中安装任何软件包。

只需安装yarn,然后使用以下命令(相当于npm installin yarn)运行安装程序:

yarn install

在以下位置了解更多信息:Yarn:从npm迁移



1

从npm安装任何软件包时,我在Windows中都遇到了相同的问题。修复了-**以管理员身份打开命令提示符并运行这3条命令的问题** /

1. npm config rm代理

2. npm config rm https-proxy

3. npm安装npm @ latest -g

对于MAC / LINUX
1. sudo npm config rm代理

2. sudo npm config rm https-proxy

3。 sudo npm install npm @ latest -g

基本上,这是带有npm的版本isuue。请检查它的担心



1

我们公司的防火墙将停止安装节点,因此会连接到个人网络并进行安装,它对我有用。


1

我发现“ npm config edit”对于更新https-proxy,proxy,registry的条目更有用

我做了这样的事情

  • npm配置列表
  • npm config编辑(在vi中打开)
  • 编辑或设置https代理,代理,注册表的配置条目
  • npm安装

1

以防万一...再多花点时间为我工作。这可能只是暂时的连接问题。


1

如果您使用的是Windows,则应遵循“高级系统设置”来检查在那里声明的env var,您应注意,代理配置可能位于环境变量中,如下图所示:

Windows环境变量

因此,如果您的代理服务器不可用或阻止来自npm的流量,您可能会注意到本主题中的上述错误。也许您根本不需要任何代理,在这种情况下,只需删除此HTTP_PROXY env变量即可。

我已经在Windows和npm设置中关闭了所有代理配置,但是,npm在下载资源时仍然出现超时和连接错误,然后我发现env变量上还剩下一个代理配置,这引起了所有麻烦。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.