淘宝源擅自把 path-to-regexp 1.8.0 版本的下载地址改成了 1.9.0 版本,导致使用了 package-lock.json, yarn.lock 的工程安装依赖失败( checksum 校验失败)。
好像是这里引入的: https://github.com/cnpm/bug-versions/pull/257/files
虽然是出于安全考虑,但这样篡改下载地址却影响了存量的 CICD 流程,给开发者造成不便,也破坏了与 NPM 官方源的兼容性(不能自由切换 NPM 源了)。
一直以为淘宝源是官方源的纯净代理呢,没想到竟会做这样的事,看来要慎用了。
同事说用腾讯云、华为云的 NPM 源也遇到过一些坑,看来想找个靠谱的国内 NPM 代理都不容易(前端圈这是怎么了?)。
中科大镜像站有个 NPM 源的反向代理(https://npmreg.proxy.ustclug.org),似乎是比较纯净的,准备试用下。
![]() |
1
shakukansp 2024-09-12 10:07:51 +08:00
一直是代理连官方源
|
![]() |
2
weixind 2024-09-12 10:09:24 +08:00
真难伺候。
|
![]() |
3
dejavuwind 2024-09-12 10:15:38 +08:00 ![]() 没事儿别碰国内这些大厂
|
![]() |
4
dif 2024-09-12 10:20:19 +08:00 ![]() 打开代理,去掉各种第三方源。一样丝滑。
国内程序员必修课,佛跳墙。 |
5
bianjp OP PRO 开发者本地翻墙没问题,但是公司的 CICD 服务器、NPM 私服都部署在内网服务器上,且不允许翻墙,所以只能找个国内的 NPM 代理。
|
6
Mithril 2024-09-12 10:33:09 +08:00
你的 CICD 直连外网拉包么。。。
正常情况下 CICD 应该只用内网缓存过的二进制,这样才能保证你产品的安全,出了问题也可追溯。 特别是 NPM 这种一大把前科的东西。 只从缓存取的话,应该不会有问题的。 |
7
Melting 2024-09-12 10:37:10 +08:00 ![]() 确实 [email protected] 是一个 bug version ,但是也不应该有 npm 源来进行纠错
|
8
mercury233 2024-09-12 10:41:34 +08:00 ![]() 合理一点的做法是默认不允许安装,加参数强制安装,默认替换是什么操作
|
9
billlee 2024-09-12 10:44:31 +08:00 ![]() 他们是给自己开发的,只是顺便公开出来给大家用一下
|
10
webbillion 2024-09-12 10:48:42 +08:00 ![]() 赞同 9 楼,镜像源这个东西你不用他们好像没任何损失
|
![]() |
11
Hyperion 2024-09-12 11:00:50 +08:00 ![]() 其实关键并不是 npminstall 的这个提交,可能、应该、也许出发点是好的
https://github.com/cnpm/npminstall/pull/256 但在全局引入这种污染行为,是在 cnpmcore 的这个提交 https://github.com/cnpm/cnpmcore/commit/a309edfa2e4a34d2a96fe36ffadea13e60f453ba 也就是在这个提交之后,bug-version 扩散到了整个镜像源 觉得没有问题的,多半应该也是不会看命令行 warning ,装不了删删 lock 对不对啊,那也就无所谓了嘛对不对啊 反正之前 bun 的 pr 里 cnpm 相关讨论看下来,维护者对这种操作还挺自豪的 所以,cnpm 是顺便给国内开发者用的这个定义应该是不会错的,这就不是个正经源 部署还是封装成 docker 整个扔上去算了 |
![]() |
12
andyskaura 2024-09-12 11:02:09 +08:00
这种时候就需要赛博大善人出马了。 dockerhub 和 npm 都可以用 cf worker
|
13
yuhuai 2024-09-12 11:14:35 +08:00
我建议是设置下.npmrc ,下载你需要的包上传到内网的包管理服务器,例如 gitea 的包管理或者 Nexus,然后替换你本地的引入
|
14
bianjp OP PRO @Mithril CICD 使用内网 NPM 私服,但私服只缓存二进制文件,仍会实时(或只缓存一小段时间)从上游 NPM 源获取包的 metadata 信息。
|
![]() |
16
swim2sun 2024-09-12 11:44:35 +08:00
可以理解 op 的状况,本地开发还好,CI 很多情况下是不能用代理的,就算能用代理 下载速度也是没法跟用国内镜像源相比
希望 op 测试出好用的镜像源后能跟大家分享一下 |
17
xiaozhenga 2024-09-12 11:45:40 +08:00
只能换新的镜像源了
|
18
LaoChen 2024-09-12 12:56:19 +08:00
大开眼界
|
![]() |
19
herozzm 2024-09-12 12:57:35 +08:00
之前国内的 docker 仓库也会存在这些问题
|
![]() |
20
kongkx 2024-09-12 13:09:26 +08:00 via iPhone
让公司在外网做一个 npm 私服穿墙,然后内网私服连外网私服, 🐶
|
![]() |
21
lyxxxh2 2024-09-12 13:09:51 +08:00
很久没用过国内镜像了。
pip npm composer go 通通走代理。 速度比国内镜像还快,也各种奇葩的网络小问题。 ps: 公司电脑内网服务器: export http_proxy=http://192.168.50.30:7890 export https_proxy=http://192.168.50.30:7890 外网服务器没辙,装代理客户端麻烦。 |
![]() |
23
IvanLi127 2024-09-12 13:31:44 +08:00
我一直以为淘宝源有 bug ,一直很抵触用淘宝源,原来是我错怪他了🤭原来不是镜像源呀
|
![]() |
24
unco020511 2024-09-12 14:16:52 +08:00
你们公司内部没有代理镜像吗?
|
![]() |
25
shiny 2024-09-12 15:20:52 +08:00 ![]() 之前本来 bun 要默认使用淘宝镜像,也是因为会替换版本所以没有上。
https://github.com/oven-sh/bun/pull/12936#issuecomment-2265147603 > npmmirror has a BugVersionService which will replace the manifest of version A (which has bugs) with version B (fixed version). This mechanism will cause the integrity inconsistency between npmmirror and other registries. |
![]() |
27
LLaMA2 2024-09-12 16:49:11 +08:00
CICD 不能用外网也没什么大问题,
开发时使用在线源,推到线上版本全部都是用 tgz 的本地包, 依赖库包 tgz 文件全部推送到代码仓库.不使用在线安装就不用担心连不上 npm 源了 |
28
kilvn 2024-09-12 16:58:52 +08:00
@lyxxxh2 #21 那可太简单了,外网服务器用 docker 起个 client 容器,直接走容器的端口不就好了,环境隔离没风险。
|
![]() |
29
BaiLinfeng 2024-09-12 17:02:37 +08:00
居然没看懂,啥情况?
|
![]() |
32
vishun 2024-09-13 08:11:07 +08:00
我去,这你么一个镜像随便改源的东西,还从来没有告知过,简直有病啊。
更好的方法是提供一个正常镜像地址,一个 bug 修复镜像地址,如果只提供 bug 修复镜像地址,也应该在官网明确告知啊。 |