cnpm/cnpmjs.org

npmmirror 变更接口兼容问题反馈

Closed this issue · 11 comments

@joebnb 你加一个 / 就有了,如 https://npmmirror.com/mirrors/node/

@joebnb 你加一个 / 就有了,如 https://npmmirror.com/mirrors/node/

加完以后有是有了,结果返回的是一个html 绝对路径地址的页面列表,所见并不是所得,如果是代理访问,里面的路径没法修改(绝对路径+https),不知道这么做的好处是什么,原本以为是为了静态化,看了下代码,还是动态拉出来最后拼出来的列表

@joebnb 如果你是需要给程序阅读的,请参考静态页面的 cors fetch 请求,我们提供了 json api 接口 https://registry.npmmirror.com/-/binary/

@joebnb 如果你是需要给程序阅读的,请参考静态页面的 cors fetch 请求,我们提供了 json api 接口 https://registry.npmmirror.com/-/binary/

这个issue不是讨论这个站点提供了什么样的接口,而是提醒作为基础设施,完全忘了作为上游基础设施可用稳定第一的原则,变更没有考虑到兼容性,甚至没有任何提前通知或者公告

npmmirror这个站点从去年开始换域名,原来有的mirror突然没有(phantomjs等),到今天访问原有的api返回的数据格式变了,感觉越来越不靠谱了

我发这个issue 是希望修改方案添加feature的时候考虑下向下兼容,起码和JavaScript 一样提前几个版本告诉下游某个接口将会 deprecate,这种修改感觉太不专业了

@joebnb 批评有道理的,但是我们已经遵循 http 协议做了 302 跳转处理,有问题的都在尽力修复。如果你还有更好的建议请表达出来,或者给更好的方案。
npmmirror 换域名我们已经写了一篇很长的文章来介绍为什么要换这个域名的,如果你还不清楚,可以点明哪些地方我们可以做得更好的。
phantomjs 没了已经第一时间在处理,并且给了临时的应急方式。
api 返回数据格式变化了,具体是那个 api 返回数据变化了,我去修复一下,要不然我也不知道如何帮助你更好地使用这个所谓的基础设施。这个基础设施完全是想帮助**的开发者使用 npm 更加轻松,如果成为了基础设施我们是欣慰的。

@joebnb 如果你是需要给程序阅读的,请参考静态页面的 cors fetch 请求,我们提供了 json api 接口 https://registry.npmmirror.com/-/binary/

这个issue不是讨论这个站点提供了什么样的接口,而是提醒作为基础设施,完全忘了作为上游基础设施可用稳定第一的原则,变更没有考虑到兼容性,甚至没有任何提前通知或者公告

npmmirror这个站点从去年开始换域名,原来有的mirror突然没有(phantomjs等),到今天访问原有的api返回的数据格式变了,感觉越来越不靠谱了

我发这个issue 是希望修改方案添加feature的时候考虑下向下兼容,起码和JavaScript 一样提前几个版本告诉下游某个接口将会 deprecate,这种修改感觉太不专业了

深有感受,“作为上游基础设施可用稳定第一的原则”,我作为上游,最核心的诉求是“稳定” “稳定” “稳定”。

@joebnb 批评有道理的,但是我们已经遵循 http 协议做了 302 跳转处理,有问题的都在尽力修复。如果你还有更好的建议请表达出来,或者给更好的方案。 npmmirror 换域名我们已经写了一篇很长的文章来介绍为什么要换这个域名的,如果你还不清楚,可以点明哪些地方我们可以做得更好的。 phantomjs 没了已经第一时间在处理,并且给了临时的应急方式。 api 返回数据格式变化了,具体是那个 api 返回数据变化了,我去修复一下,要不然我也不知道如何帮助你更好地使用这个所谓的基础设施。这个基础设施完全是想帮助**的开发者使用 npm 更加轻松,如果成为了基础设施我们是欣慰的。

  1. 提供的服务就不应该被修改,或者修改时像clean code一样不改变原有逻辑通过封装旧接口提供新服务
    如果没记错 302 跳转总共改了 2 次,一次是taobao.org 改成 nlark.com 然后再改成 npmmirror.com,因为我们公司后台有白名单防火墙,没有添加域名导致那两次有大量请求被拦截,这种没有考虑到的场景相信有很多,可能还有些为了各种各样安全原因,在做proxy的时候可能就没有开 follow redirect,这种真的需要提前公告到下游。

  2. 3 我也没有在 npmmirror.com 找到任何关于 npmmirror 的文章、phantomjs 的解决方案的链接/入口(现在我还不知道这个解决方案在哪里可以看到)。只是在微信pyq看到过域名修改时发的文章,想问下除了npmmirror意外我们是否还维护了其它的站点用来公告和沟通?如果是是否可以将通知公告加入到 npmmirror.com 的首页上,以便出现问题摸索到这个站点可以第一时间发现。

  3. API 兼容问题原本访问 node dist应该是:
    https://registry.npmmirror.com/mirrors/node/
    访问时内部的路径也是相对地址,用一行代码可以完美 proxy,点击即可下载
    现在是:
    https://registry.npmmirror.com/binary.html?path=node/
    访问,并且还是之前说的,里面的链接是绝对地址,在有防火墙或者严格限制网络出口的环境下无法正常通过浏览器浏览下载。,现在改要处理很多逻辑,还要检查res body 去替换,而这些逻辑都是特定的不通用的逻辑,为什么不可以用通用的方法(原来一行代码的方案)解决上面这个问题。更重要的是可能外部已经围绕现在的借口情况做了不少周边生态,现在这么一改,周边,文档,全部都丢了,相信有人遇到过文档版本牛头不对马嘴的情况( 如rxjs )这种情况,对于初级前端/后端/CD运维来说可能真不明白自己做的对不对了。

不确定这样改动 API 的意图是什么,是不是为了解决api接口统一的问题?npm 接口都是 /-/api_name,但 binary.html 也可能是个包,mirrors 也是你们自己发布的包,当保留字段占着不就完了,再提供/-/mirrors 适配新版的 api,过个5年10年网上的文档,大家的配置都用新版的时候再考虑下掉/mirrors 不也还行。

说了这么多,也是对事不对人,感谢你们为大家提供这样的服务,因为认可所以依赖,上面的问题和吐槽也是希望 npmmirror 可以越来越好,这么多的变动想必也是满怀热心的在做,而且看维护的项目不止一个,注意休息,希望越做越好

API 兼容问题原本访问 node dist应该是

如果真的是 node dist,node installer 程序不会去访问这个 html 页面的,是直接拼接最终下载地址下载的,你可以试试拼接最终下载地址下载,跟原来的 302 逻辑是一样的,都会有一次 302 下载,例如我举一个例子:

如访问的是 https://npmmirror.com/mirrors/node/v16.13.2/node-v16.13.2-darwin-arm64.tar.gz
在没有这一次变更之前是 302 到 https://oss.npmmirror.com/dist/node/v16.13.2/node-v16.13.2-darwin-arm64.tar.gz
这一次变更之后是到 https://cdn.npmmirror.com/binaries/node/v16.13.2/node-v16.13.2-darwin-arm64.tar.gz

因为最终的下载地址一次 302 实现的,所以它应该是不固定的,因为早年**的 npm 镜像是七牛云赞助的,后来费用实在太贵,我们只能找到阿里云来继续赞助,如果没有这一次 302 的跳转,可能我们未来更换赞助商都会是问题。

我也没有在 npmmirror.com 找到任何关于 npmmirror 的文章

确实我们没有做好,至少应该在 github 发一个 issue 公告,我们只在知乎发了 https://zhuanlan.zhihu.com/p/430580607

phantomjs 的解决方案的链接/入口(现在我还不知道这个解决方案在哪里可以看到)

可以看 cnpm/mirrors#282 (comment) ,因为 mirrors 的代码实现是在 mirrors 代码库实现的。


「一次是taobao.org 改成 nlark.com 然后再改成 npmmirror.com」关于这个域名变更,因为涉及一些敏感信息无法公开,所以一直很低调地没有正面回复,现在也无法回复。
我们是非常不想更换域名的,但是不更换可能** npm 镜像就只能关闭了,nlark.com 是我们找了语雀团队临时支撑过度一段时间,给我们去注册 npmmirror.com 并完成备案时间的一次妥协,要不然不上新的域名过度,可能在那个备案过度时间我们只能暂停服务,两者取伤害轻的只能临时过度一下。
npm.taobao.org 域名还在慢慢下线阶段,在 2022 年6月底会直接下线,到时候可能还会引起更多使用者的吐槽,但是总比没法使用好。

我们是非常愿意接受各种反馈的,吐槽也很正常,毕竟这个** npm 镜像只是我们热爱才在坚持维护和更新。

当然这一次我们的升级迁移引起很多数据同步问题,在此给你带来的不便抱歉。

uyarn commented

首先感谢cnpm提供的服务 其次冒昧地在这个关闭的issue上问一下(因为没找到合适的地方提issue也不合适新开一个了感觉) github.com.cnpmjs.org 这个镜像请求失败了 是什么原因呢

@uyarn github.com.cnpmjs.org 已经被 chrome 和 github 识别为钓鱼行为,我们停止了这个代理。

uyarn commented

@uyarn github.com.cnpmjs.org 已经被 chrome 和 github 识别为钓鱼行为,我们停止了这个代理。

好吧 sad :(