在开发了npm包后,需要上传到npm库上,步骤一般是npm login登录,然后npm publish即可,但可能会存在一些问题。

常见错误

使用了非官方仓库

https://registry.npmmirror.com 淘宝最新镜像

image.png

image.png

会跳转页面,输入账号密码后报错,显示Public registration is not allowed

https://registry.npm.taobao.org/ 淘宝旧镜像

image.png

会显示Public registration is not allowed

这个错误主要就是你用了非官方库,切换成官方库就行

使用官方库

http://registry.npmjs.com

image.png

这个错误是新的npm不再允许使用http协议进行包上传,必须通过https才行

https://registry.npmjs.com

本机无ipv6地址,它会去找ipv4地址或dns解析时将registry.npmjs.com解析为了ipv4地址,而npm仓库仅在ipv6地址开放了443端口(有时候又会在ipv4上开放443端口,这种情况下又可以访问,具体情况需要使用telnet进行测试,如何在windows打开telnet,百度下即可),所以无法访问

image.png

image.png

原理

通过https://www.ipaddress.com/ip-lookup查看registry.npmjs.com的ip
地址,如下图所示:

image.png

使用telnet进行测试

80端口

ipv4地址

image.png

ipv6地址

image.png

都是可以通的

443端口

ipv4地址

image.png

ipv6地址

image.png

ipv4不通,ipv6是通的

解决方法

  1. 确保电脑有ipv6地址

image.png

image.png

  1. 使用npm login访问https://registry.npmjs.com即可,如果因为dns解析出现超时问题,在本地hosts(C:\Windows\System32\drivers\etc)里添加记录即可

    2606:4700::6810:1b22 registry.npmjs.com
  2. 登录成功

image.png


点墨
26 声望3 粉丝

全栈前端开发工程师