今天遇到一个问题,cnpm adduser
一直失败,返回 409 Conflict
。
我们先来看下报错信息
409 Conflict - PUT http://registry.cnpm.xxxx.com.cn/-/user/org.couchdb.user:mingyu6 - conflict
第一步 分析 http 错误码
409 Conflict:请求与服务器端目标资源的当前状态相冲突,冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应。
emm 看明白了,怎么解决呢?大大的问号
第二步 baidu + google
看了排名靠前的所有网站。简单整理如下:
- 指向错误,我们一般会配置
taobao
镜像,在该状态下如果直接登录会出现409 Conflict
重置下 registry 就可以了,当然这一类都是登录官方源出现的。
npm config set registry https://registry.npmjs.org
-
修改账户密码,过一段时间就可以解决了。(玄学)详情戳我
-
删除/恢复
$HOME/.npmrc
, 这个一般是因为自己误操作改坏了配置文件,和第一种情况有点相似。
第三步 尝试换 registry (其实是 2 的补充
查了一圈发现,所有的问题都和 registry 相关。那么试一下将 registry 切换成 npm 的官方源会如何呢?
npm adduser
...
Logged in as xxx onhttps://registry.npmjs.org/
登录成功。
第四步 查 issue
再想一下,网上的解决方案都是针对于 npm adduser
失败,而我们的情况是 npm adduser
成功, cnpm adduser
失败,并且可以确认的是,发送登录请求的 registry 就是我们的目标地址。因此我们可以断定问题是在 cnpm
上。
素质三连:
- 打开 cnpm 的官方仓库
- search in this organization
- 找到相关 issue
很庆幸,找到了完全相同的issue
最后一步
找到后端,issue 丢给他。