解决WEEX/phantomjs-prebuilt安装太慢 weex安装卡在phantomjs-prebuilt不动 的问题

  • 问题描述
  • 问题诊断
  • 解决方案
  • 加速原理和其他说明
  • 如果方案没用的话

问题描述

使用weex-toolkit创建项目,总是卡死在phantomjs-prebuilt这个依赖上面,代理也设置了,但是就是几分钟甚至半个多小时没反应,死活不走。

问题诊断

phantomjs-prebuilt的作者这个逼写的源代码是个下载器,根本没有把phantomjs.exe上传到npm上,并且默认源是github,这样不仅下载巨慢而且默认代理根本没用。

解决方案

打开当前用户目录下的.npmrc或.yarnrc文件,末尾添加一行。以下两个应该是一样的,选一个就可以。(第二个是笔者fork的仓库)

# .npmrc
PHANTOMJS_CDNURL=https://gitee.com/lyliyuan633/phantomjs/blob/master/
# .yarnrc
PHANTOMJS_CDNURL "https://gitee.com/lyliyuan633/phantomjs/blob/master/"

或者

# .npmrc
PHANTOMJS_CDNURL=https://gitee.com/finntenzor/phantomjs/blob/master/
# .yarnrc
PHANTOMJS_CDNURL "https://gitee.com/finntenzor/phantomjs/blob/master/"

加速原理和其他说明

今天用weex创建项目,慢的要死,发现总是卡在phantomjs-prebuilt安装不上,于是在github上找到phantomjs的源代码,打开/lib/util.js发现其中第14行赫然写着

var DEFAULT_CDN = 'https://github.com/Medium/phantomjs/releases/download/v2.1.1'

我裂开了,这玩意就是个下载器,还是直接从github下载,也没有多线程下载断点续传啥的,能快才有鬼了。
追踪DEFAULT_CDN发现第92至96行代码如下

  var cdnUrl = process.env.npm_config_phantomjs_cdnurl ||process.env.PHANTOMJS_CDNURL ||DEFAULT_CDNvar downloadUrl = cdnUrl + '/phantomjs-' + helper.version + '-'var checksum = ''

也就是说这个B还是有点良心的,允许你通过环境变量npm_config_phantomjs_cdnurl或者PHANTOMJS_CDNURL来更改下载源的位置,那么接下来问题就好说了,只要换个源就可以了。
那么这个时候我想到的第一个方法就是先下载下来,然后跑一个本地服务器。实际上用IDM从github上下载并不算慢,下载链接https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
接着,把文件扔进本地的nginx服务器根目录,接着在npmrc和yarnrc里面加上环境变量:

# npm
PHANTOMJS_CDNURL=http://127.0.0.1/
# yarn
PHANTOMJS_CDNURL "http://127.0.0.1/"

我是采用yarn来安装weex的,由于我不确定到底最终是以npm的环境变量为准还是以yarn的环境变量为准,因此我都加上了。
此时,重新安装,已经是20秒内安装完毕了,这个结果已经很满意了。

不过考虑到,以后可能还有这种麻烦的事情,而且这个解决方案必须要一个本地服务器,如果没有装nginx或者apache就麻烦了,考虑到尽量一劳永逸的话最好传到gitee上。
于是笔者在gitee上搜一下有没有现成的仓库,搜索phantomjs发现果不其然有一个,但是只有linux的,遂fork,从github把其他三个二进制包一并上传,再pull request,至此应该问题都解决了。如果以后重新配环境,只需要npmrc和yarnrc改一下环境变量即可。

如果方案没用的话

这种解决方案是通过更改下载源,从gitee下载从而解决的。因此在以下几种情况下会失效:

  1. gitee崩了
  2. 原仓库作者删掉了或者被关闭了
  3. 你的网络环境连不上gitee
  4. gitee更改了blob下载地址
  5. gitee加了防盗链,下载不动
  6. phantomjs库的作者更新了,不再采用v2.1.1

如果遇到这些情况(可能在本文写下一两年或者两三年以后),可能你不得不在自己的本地服务器上保存这些文件。
另一方面,phantomjs库的作者是把这几个文件的md5码直接硬编码到下载器里面的,因此不必担心下载了错误的包或者病毒的问题。但是另一方面如果作者更新(作者已经咕了一年多了)了话,也可能会导致这个方案无效,届时请读者自行解决。
2020-08-25

解决WEEX/phantomjs-prebuilt安装太慢 weex安装卡在phantomjs-prebuilt不动的问题相关推荐

  1. C4DR19安装的时候进度条卡到一半就不动了|折腾了4小时-【已解决】

    没有安装成c4d的小伙伴可以看我下面这篇文章图文教程写的很纤细. 如何安装Cinema 4DR19与如何预置文件-图文教程 事情是这样? 类似以上这种情况安装到了三分之一的时候,估计剩余时间就越来越少 ...

  2. weex 打包成android的apk之后安装提示安装包解析错误

    今天测试weex build android 命令打包成apk文件之后再安卓上安装出现"安装包解析错误",但是用 weex run android 生成的可以直接安装,后面上网查了 ...

  3. win10 Tex Live安装太慢解决:使用镜像安装(清华/科大/南大/香港镜像)

    Tex Live安装太慢解决:使用镜像安装(清华/科大/南大镜像) 下载镜像 四个镜像站的texlive iso镜像地址: 清华镜像https://mirrors.tuna.tsinghua.edu. ...

  4. weex android单页路由,基于weex的有赞无线开发框架

    出于对开发效率和动态化的要求,无线端的开发框架也一直在更新,从 Hybrid.结构化 Native View.React Native.Weex,再到现在正在大受关注的 Flutter.什么样的框架才 ...

  5. php amqp扩展安装,php扩展AMQP,安装报错解决

    接下来来安装php扩展AMQP,安装了它以后,才能用PHP操作rabbitmq. wget https://pecl.php.net/get/amqp-1.4.0.tgz tar -zxvf amqp ...

  6. python安装cv-oracle时如何解决vc++的问题_python中cx_Oracle模块安装遇到的问题与解决方法...

    --=========================================================================== 我的实践过程: 1,将oci.dll文件(从 ...

  7. python3.6.5无法安装-Python3.6无法安装numpy,如何解决?

    widows7 python3.7 怎么安装numpy包 Windows+R,在对话框输入cmd,回车,在英文输入法的条件下输入pip install numpy,然后回车 Python3.6无法安装 ...

  8. ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

    说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业信用数 ...

  9. python安装失败了_python安装库安装失败怎么解决

    详细内容 相信很多刚开始入门Python的菜鸟们在安装python第三方库的时候,多多少少都会遇到一些安装失败的问题. 下面,我将结合自身经验,分享一下在windows操作系统上此类问题的解决办法. ...

最新文章

  1. 重新分区_完全不需要装软件!教你轻松调整硬盘分区
  2. curl linux 数组参数_Linux系统调用原理
  3. Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法
  4. [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁
  5. 单向链表的逆转(数据结构)(c语言)
  6. 【计算机网络】HTTP协议历史版本
  7. windows “文件大小”与“占用空间”、文件系统与文件拷贝
  8. Storm【实践系列-如何写一个爬虫-】6 URLInjector
  9. centos7.4 安装配置rabbitmq-server 实操记录
  10. fusion 360动态观察的快捷键
  11. 西湖论剑 easyCpp writeup
  12. 前端上传超大文件解决方案
  13. COIL:结合稠密检索和词汇匹配的更高效检索模型
  14. 浅谈电子学--台湾新竹交通大学 陈英龙
  15. 《宝岛双雄》曝正式海报 房祖名挑大梁的银幕转型之作
  16. ios 计算两个时间相差秒数_iOS NSDate时间换算
  17. 记一次美版苹果手机购买经历
  18. 华科计算机博导刘云生论文,华科计算机学院导师名录及研究方向
  19. 怎么让steam允许访问自己的计算机,科技教程:电脑steam软件如何解决好友网络无法访问...
  20. 去百度,还是去创新工场

热门文章

  1. R语言主成分分析总结
  2. 安装 AutoCAD、Revit、Maya等出现1603怎么办
  3. 【编程题】有趣的数字
  4. 淘宝侧边栏下滑页面固定案例
  5. 2021年R1快开门式压力容器操作考试及R1快开门式压力容器操作考试题
  6. 回归预测 | MATLAB实现RBF径向基神经网络多输入单输出
  7. 【图像处理】基于ART算法实现图像重建matlab源码
  8. 最大后验(英文为Maximum a posteriori,
  9. 2022年上半年系统集成项目管理工程师综合知识真题及答案解析
  10. Python mac运行pygame一片空白不显示内容-解决方案