Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

备稿: 常见问题处理 npm fetchPackageMetaData error ... Unexpected end of JSON input ... #20

Closed
iugo opened this issue Apr 10, 2020 · 0 comments

Comments

@iugo
Copy link
Member

iugo commented Apr 10, 2020

之前大多数项目都是使用 yarn, 但现在 yarn 正在切换到 berry, 有一些问题. 所以最近的新项目使用了 npm. 没想到, 这么多年过去, 依旧是坑.


npm 的确是有效率问题的. 并且有一些低级问题没有进行处理.

效率问题比如依赖之间关系梳理的复杂, 效率低. 具体不展开了, 但实际使用感受已经足够说明问题.
是 Yarn 存在的意义. 同时也是 deno 想要避免的.

这里说一下在国内都可能遇到的问题:

  1. 网络原因导致包下载失败.
  2. 再次尝试仍然从缓存中拿失败的数据.
  3. 如果不清除缓存, 一直无法跳过失败数据.
http fetch GET 304 https://registry.npmjs.org/cssnano-preset-default 982ms (from cache)
silly fetchPackageMetaData error for cssnano-preset-default@^4.0.7 Unexpected end of JSON input while parsing near '...E1piZamJTcxPxUDG/h3FS'

其实这里可以增加一个简单的判断, 如果 JSON 化失败, 则判断为网络问题, 不再从缓存中拿数据.

无法单独清除某缓存, 比如 npm cache clean https://registry.npmjs.org/cssnano-preset-default.

缓存一致性检查 npm cache verify 奇慢.

无奈只好使用 npm cache clean --force 清除所有缓存.

想到清除所有缓存后, 随之而来的所有依赖被重新下载, 想想都头疼.

这真是一个太明显并且太严重的问题了. 网上许多 npm 包的 issues 都是因为 npm 的这一问题.

重新安装依赖中, 太慢了... 不过起码能用, 比代理会快点.

可是 Yarn berry 还是许多问题, 比如 yarnpkg/berry#1149.

使用淘宝镜像吧: https://developer.aliyun.com/mirror/NPM

即便使用镜像, 还是挺慢的.

@gsk475 gsk475 closed this as completed Apr 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants