出现这个问题的原因基本就是你的网速很慢。有以下几个原因:
- 你的网速真的很慢。。。
- 你使用了很慢的源,比如官方源 https://registry.yarnpkg.com/
- 一些二进制文件需要在本机上编译,会直接从比如github下载,而不使用taobao源等,所以即使换了源,也会很慢。
一般而言,要下载的包并不会很大,如果详细的报错信息指明是超时问题。可以修改下载包的超时时间。
ESOCKETTIMEDOUT
以上的错误就可以尝试通过以下的参数解决
yarn install --network-timeout 100000
--network-timeout <milliseconds> TCP timeout for network requests
对于需要下载二进制包的依赖,比如node-sass
,可以指定编译好的下载地址,比如
SASS_BINARY_SITE=http://npm.taobao.org/mirrors/node-sass npm install node-sass
更多可以参考这里:https://npm.taobao.org/mirrors/
除了以上的可能性之外还有一种可能…,你使用了yarn.lock。并且当时该文件生成的时候使用的是慢的源,比如某个包使用了官方源。这时候重新安装的时候,即使你本地源不是官方源,会导致仍旧使用官方源。
话说这算是一个bug。在yarn v2中解决了,v1不会处理了。可以参考下这里: https://github.com/yarnpkg/yarn/issues/3330
比较暴力的解决办法是,干掉yarn.lock。当然生产环境还是慎行之…可以考虑全局搜一下,找到比如使用官方源的依赖,并替换之…
甚至有个脚本可以使用:
sed -i 's#http://private-registry/repository/npm#https://registry.yarnpkg.com#' yarn.lock
参考这里:
https://github.com/yarnpkg/yarn/issues/5892#issuecomment-440441879
最后希望你能如愿看到
Done in xxx.xxs.
😃