有关 npm login 和publish 的疑惑

npm 想publish自己的包,package.json已配置好,需要先 login,然后才能publish,可如果用 官方的 registry,正常 install 都下载不动(即使我开启了ss中的全局模式, fb 油—管都可以正常使用的情况下),比如我想安装个requirejs:

有关 npm login 和publish 的疑惑_第1张图片
0.png

login 也没反应,过了会超时后,就报错:

有关 npm login 和publish 的疑惑_第2张图片
1.png

接下来换了 淘宝npm镜像后,
$ npm config set registry https://registry.npm.taobao.org 装包时速度超快:

2.png
3.png

那么问题来了,我还是想login,然后发布我的包:

似乎换到淘宝镜像后,秒登陆这时候,可以 npm login了,然后$ npm config edit , 记事本打开了 .npmrc文件,有如下信息:

有关 npm login 和publish 的疑惑_第3张图片
4.png

这时候,可以看到,说我已经登陆了:


5.png

那我再publish一下看看,还是报错了,我也觉得在使用淘宝镜像下,login,似乎并没有登录到 真正的npm上,自然没有权限:

有关 npm login 和publish 的疑惑_第4张图片
6.png

有这么一句看似很关键的信息:
''no_perms Private mode enable, only admin can publish this module: xiaofeng-demo0''

那么出现以上问题,还是因为被q了吗,可是我已经正常f —q了,所以可能有其他方法或者命令解决这个问题,亦或者我这样随意换源,污染了一些东西, 需要重装npm 和 node?

************************201710/27 16:58 更新(填坑)***************************

首先搞明白一件事,淘宝镜像是一个提供国内高速下载的镜像资源,并且每10分钟,就和官方同步一次数据。 所以,平时装包的时候,大可以使用淘宝镜像。

具体怎么使用,网上有很多。你可以通过以下命令,全局安装nrm小工具做快速切换:

npm install -g nrm 
nrm use taobao
nrm use npm

或者直接编辑 ~/.npmrc 也可以快速切换(使用记事本,还是直接在命令行里 通过 vi ~/.npmrc 随你便):

~/.npmrc

总共就2行,先看第一行,把这个地址直接换 淘宝的: https://registry.npm.taobao.org
手动切换就行。

填坑重点来了!

淘宝镜像只是提供下载,如果你要 npm loginnpm publish 登陆发布自己的作品, 你必须要切换到【官方货源】,这点很好理解,毕竟你是要发布到 npm上,而不是 taobao上。

那为什么之前即使用了官方货源,无论install 某个包,或者 login 还是报错呢?注意看下面的关键信息:

有关 npm login 和publish 的疑惑_第5张图片

EAI_AGAIN:

EAI_AGAIN is a DNS lookup timed out error, means it is a network connectivity error or proxy related error.

这是DNS查找超时导致的,无法解析这个 https://registry.npmjs.org 域名,
这是我自身网络环境导致的。

关于这个报错更详细的可以看看:
Error - errno EAI_AGAIN
里面比较详细地介绍了,关于 NodeJS 的 Error - errno EAI_AGAIN 这种报错。

所以每个人自身的网络情况都不一样,有时候真不能怪npm,我最后是怎么解决的,首先看看自己的npm的版本号,和官网的对比一下:

npm -v

然后试着 npm更新 npm:

npm install -g npm 

问题还存在,那就换个网络,比如换个wifi,或者像我一样,拔掉了连接路由器的网线,插上无线网卡(我用的台式),然后连上wifi,就正常使用了, 实测,即使不用淘宝镜像,使用官方的资源,也可以正常下载, 登陆,发布, 只是用了淘宝镜像下载时更快一点而已。

所以遇到 Error - errno EAI_AGAIN ,先好好搞搞自己的网络吧。

当你成功登陆到npm后,你的.npmrc文件会多出来一行,用来记录你的登陆令牌。 这时候表示,你是logged in 了(当然命令行里也会提醒你登陆成功)

登陆成功
接着发布自己的包
有关 npm login 和publish 的疑惑_第6张图片
然后立刻到npm去搜索下自己发布的package吧:D

(以上的操作不需要fq,至少我是这样,之前是方向走偏了,没看懂报错,明明是自己网路的问题)

最后,非常感谢评论区的小伙伴的帮助!

你可能感兴趣的:(有关 npm login 和publish 的疑惑)