记一次npm发包失败的经历
前言
早就注册了npm,就发布了一版测试包,搁置到此,最近想封装一些常用组件,发布到npm上面,也算是一种技术储蓄了。
从昂首挺胸到灰头土脸
正常的发布流程其实很简单:
- 注册个npm账号
- 本地使用npm登录
npm login
,填写用户名、密码、邮箱完成登录 - 在待发布的文件内执行
npm publish
,即可完成npm包的发布
按照这个流程,直接登录就可以了,之前我已注册完成了,直接npm login
后输入信息,回车。
Registry returned 409 for PUT on https://registry.npm.taobao.org/-/user/org.couchdb.user:1091214370: conflict
我自己登录自己的账号,你还跟我报冲突!!!!!
根据提示去看日志,
6 http request → POST http://r.cnpmjs.org/-/v1/login
7 http 404 ← Not Found (http://r.cnpmjs.org/-/v1/login)
在npm的github的issue里面看到了两种导致问题出现的原因:
- .npmrc文件内容改动
- node.js的8.0版本的bug
修改.npmrc文件内容:
https://registry.npmjs.org/
直接卸载node装最新的也可以,不过有点暴力。
继续执行npm login
,填完信息很顺利的看到了Logged in as 1091214370 on https://registry.npmjs.org/.
,说明我已经登录成功了,下面执行发布吧npm publish
。
跌倒不可怕,站起来接着跌倒呗。
You do not have permission to publish "xc". Are you logged in as the correct user? : xc
看到了403和日志输出,我自己的包我没有权限?
好吧我错了,这包的名字被人占用了,我换个名字吧。
更换名称xc为choicesaas,再次发布。
看到最后一行日志打印的内容,即表示发布成功了,一波三折。。。。。
吐槽
npm的重名校验逻辑不清晰呀,好歹提示下存在重名包呀!