【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误

目录

前言背景:

采坑之路:

1.修改https为http,问题还在

2.修改为淘宝镜像,问题还在

3.修改为官网地址,问题还在

4.升级node和npm,问题还在

5.猜想网络问题,问题解决

采坑总结:

1.输入npm login直接给你跳转到Sign in to CNPM

2.npm ERR! code E426

3. npm ERR! code ETIMEDOUT

4.npm ERR! code ECONNREFUSED


前言背景:

近日,我执行npm publish突然报错,主要是报code ETIMEDOUT,连接异常。

npm notice
npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! network request to https://registry.npmjs.org/xx failed, reason: connect ETIMEDOUT 104.16.1.35:443
npm ERR! network This is a problem 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! A complete log of this run can be found in:
npm ERR!     C:\Users\16597\AppData\Roaming\npm-cache\_logs\2023-12-15T02_06_32_447Z-debug.log

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第1张图片

采坑之路:

1.修改https为http,问题还在

然后受这篇文章《npm无法登录、发布_reason: connect etimedout 104.16.26.34:443 npm err-CSDN博客》误导,

重新把https://xxxx改为http://xxx,问题还在!

# 设置镜像源为官方去https为http地址
npm config set registry http://registry.npmjs.org/

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第2张图片

2.修改为淘宝镜像,问题还在

然后我受这篇文章《npm 发布更新包失败问题_npm publish 后未刷新-CSDN博客》误导,把registry设置为了淘宝镜像,我还以为登录过期了,我就用npm login重新登录,结果登录不了。

Sign up to CNPM

Public registration is not allowed

# 设置registry为淘宝镜像源
npm config set registry https://registry.npmmirror.com/

注意:淘宝镜像更改重定向地址:原来用http://registry.npm.taobao.org/npm,所以现在直接用了https://registry.npmmirror.com/。

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第3张图片

3.修改为官网地址,问题还在

然后我又受《npm login问题汇总-CSDN博客》这篇大哥误导,他还强调,要改回去不带https的地址,然后我又试一下登录npm login

命令: npm config set registry http://registry.npmjs.org/注意不是下面的https地址,是http地址。
(注意不是npm config set registry https://registry.npmjs.org/

顺便说一下,退出上一个npm login,我用的Ctrl+Z。

# 查看registry配置
npm config get registry

# 设置registry配置
npm config set registry http://registry.npmjs.org/

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第4张图片

结果大家也看到了,出现新的错误,CODE E426

$ npm login
Username: zhou***han
Password: *******
Email: (this IS public) 165***[email protected]
npm ERR! code E426
npm ERR! Registry returned 426 for PUT on http://registry.npmjs.org/-/user/org.couchdb.user:

4.升级node和npm,问题还在

出现新的code码,心想那就好解决了呀,参照了《npm publish遇到 code E426_npm publish 426-CSDN博客》《npm publish发布426与403问题_npm包发布失败 upgrade required - put-CSDN博客》《npm publish报错error 426 Upgrade Required - PUT http://registry.npmjs.org/your-packageName_npm err! code e426-CSDN博客》三篇文章,总的来说就是npm让我升级,node让我升级14.18.0 LTS。

然后查看了一下我的npm版本是6.4.1,还好我有装nvm,切换一个node版本不就升级。试试吧。

# nvm查看node版本
nvm list
 
# nvm使用一个高版本
nvm use 18.16.0

# 查看当前node版本
node -v

# 查看当前npm版本
npm -v

结果:

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第5张图片

npm notice Log in on http://registry.npmjs.org/
npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/

npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/
npm ERR! code E426
npm ERR! 426 Upgrade Required - PUT http://registry.npmjs.org/-/user/org.couchdb.user:zhouzhenhan

npm ERR! A complete log of this run can be found in:
npm ERR!

反而复现了别人文章里的问题426 Upgrade Required,我出现的问题 Registry returned 426,然后我按照文章《npm publish 时提示需要升级TLS 1.2的解决方案_including for package installation - must use tls -CSDN博客》里的操作,一顿安装TLS也没解决我的问题。然后就想打开那个通知《 The npm registry is deprecating TLS 1.0 and TLS 1.1》看看描述。

npm install -g https://tls-test.npmjs.com/tls-test-1.0.0.tgz

看到最后一行,要升级npm大于7,要奔溃了啊。此时我的node 18.16.0,我的npm版本9.5.1.也按要求下载了TLS,还是报错。

If you see a TLS error message instead, we encourage you to upgrade to a currently supported version of Node.js and the latest version of npm v7.

翻译:

如果你看到一个TLS错误消息,我们建议你升级到当前支持的Node.js版本和最新版本的npm v7。

5.猜想网络问题,问题解决

冷静冷静,回归最开始我出现的问题,我是连接超时,连不上官网,登录不了,发布不了。然后看了这篇《npm publish 发布失败 无法连接 https://registry.npmjs.org》和我现象描述一致,我也是手机可以出现,电脑端访问不行。我也共享了手机热点,太慢了,还是无法登陆,无法发布。

如图,手机访问有数据返回:

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第6张图片

电脑端访问就无法连接了:

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第7张图片

看来只能借个梯子,设置一下proxy的端口号。

# 设置代理端口
npm config set proxy http://127.0.0.1:8001

查看梯子的端口号是8001,你可以具体改成你的自己的代理:

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第8张图片

由于镜像地址这个时候不是https的报错变成了code ECONNREFUSED

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第9张图片

所以设置回https的官网地址:

# 设置为加https的 
npm config set registry https://registry.npmjs.org/

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误_第10张图片

终于可以登录成功拉,可以发布了!~

采坑总结:

虽然本次采坑走了很多弯路,但也学会了一些技能,比如如下错误的处理:

1.输入npm login直接给你跳转到Sign in to CNPM

这个时候改镜像地址为官网才能正常登陆发布;

# 设置官网https的镜像
npm config set registry https://registry.npmjs.org/

2.npm ERR! code E426

应该是接口请求失败,需要看一下是因为网络问题,还是参数问题请求不了?

npm ERR! code E426
npm ERR! Registry returned 426 for PUT

npm ERR! code E426
npm ERR! 426 Upgrade Required - PUT

我出现以上2个报错,都是通过代理连接上官网镜像就解决了。

# 设置代理端口
npm config set proxy http://127.0.0.1:8001

3. npm ERR! code ETIMEDOUT

这个报错是连接错误  This is a problem related to network connectivity.连接超时,我也是通过代理解决。猜测有防火墙或者限制访问了,毕竟手机可以打开,电脑打不开。

npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! syscall connect
npm ERR! network connect ETIMEDOUT 104.16.29.34:443

4.npm ERR! code ECONNREFUSED

这个问题报错应该是端口设置了,但是连接不了。我把梯子打开就可以了。

npm login
npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! FetchError: request to https://registry.npmjs.org/-/v1/login failed, reason: connect ECONNREFUSED 127.0.0.1:8001
 

最后

如果说

友友们之间的点赞

展现的是相互之间的支持,善意和友情

那么

你对我文章的认真阅读

则是对我的劳动成果的

默默地承认和支持

每一次创文的过程

都是我锻炼自己逻辑思维能力和语言组织能力的过程

也是我

不断深悟生活,思考人生的过程

每一篇文章的形成

都是我心血的结晶

感谢您的阅读

欢迎点赞,评论,互关!~~

你可能感兴趣的:(npm,npm,前端,node.js)