在上一篇中我们终于安装好了Meteor如果直接使用2.0版本写代码开发网页的话是完全没有问题的。但是如果运行其他版本Meteor写的项目,就会出现新的问题。显然,当时单纯的我还沉浸在安装成功的快乐里无法自拔当我心怀激动地开始运行代码时,可怕的剧情发生了
5. Meteor不同版本的问题
上篇的MyApp项目是我们直接使用Meteor2.0创建的,所以使用2.0版本的Meteor运行不会有任何问题,但是我需要运行的这个项目是1.4.1.1版本的,所以当我输入meteor开始运行时,就出现了正在下载meteor-tool@1.4.1.1的消息:
安装1.4.1.1版本的meteor-tool界面
这个不会报错,但是下载进度一直是0%,我原以为是墙的问题,但在GitHub讨论帖还有Google上逛了一圈发现,很多外国网友在版本更新、版本降级、或者运行其他版本代码的时候也遇到了这个问题。看来Meteor真是个四海内一视同仁的好框架,不管你身处哪里,谁也别想下载成功
有关这个问题帖子中也给出了一些可能的原因,说的最多的就是安装包版本不同造成的不适配。我在.meteor下的packages文件夹中随机找了一些包检查了一下,发现每一个安装包的版本几乎都不相同:
不同安装包的版本都不相同
Meteor在运行的时候会先寻找类似meteor-tool、http这样的安装包,查看安装包的版本是否和项目中使用的版本匹配。如果版本匹配,程序会继续运行,如果寻找不到安装包或者版本不匹配就会自动下载适配版本的安装包。所以即使安装包升级到了最新版本,也不能运行旧版本的程序。原因大概清楚了,但是为什么会下载地这么慢,看了一圈我也没看出个具体答案
5.1 命令行进行版本降级
是的,又是命令行,尝试这个方法的时候我就没想过会成功,使用命令行安装Meteor都没成功凭什么降级版本就可以成功
按道理讲,在命令提示符界面输入meteor --release 1.4.1.1,就可以让Meteor版本降级为1.4.1.1了:
使用命令行降级Meteor
但是和安装Meteor时一样,这个进度条在安装到10%或者20%(看运气)时就会归零,然后重新安装。即使搭了梯子也没有用,有了之前的失败经验,这个方法很快放弃,下一个
5.2 hosts中添加地址
GitHub上很多网友都推荐这个方法,我在查资料中觉得写安装Meteor最靠谱的博客也提了这个方法。唯一不太好的是,这些都基于Ubuntu系统,不过没关系,我们跨系统借鉴也不是第一回了(贴个博客网址:https://blog.csdn.net/zhujuyu/article/details/79228784?utm_source=blogxgwz6)
其实这个方法很简单,Ubuntu系统下的方法是在/etc/hosts文件中添加54.192.225.217 warehouse.meteor.com,之后重启系统即可加快下载速度。
这么做的原因有不少网友说是为了解决DNS的问题,在hosts中加入IP地址和域名可以让本地直接解析域名从而下载安装包。不过这个方面我不太专业,所以就不做过多说明了。
Windows系统中也有hosts文件,在C盘->Windows->System32->drivers->etc文件夹中,另外,hosts文件可能和AppData一样是隐藏文件,如果找不到的话,记得显示一下隐藏文件:
hosts文件
一般来说,用户对hosts文件只有只读权限,所以在修改之前需要先给用户分配权限,在hosts文件上右键->属性->安全->选择用户->勾选Users的权限,这样就可以对hosts进行修改和保存了:
给用户分配权限
设置权限后使用记事本打开hosts文件,在最后一行输入IP地址+至少一个空格+域名+回车,之后保存:
hosts文件中添加IP地址和域名
保存后需要进入命令提示符界面,输入ipconfig/flushdns刷新DNS解析缓存,我们之前保存的内容才会生效:
刷新DNS解析缓存
很多人都表示用这个方法成功下载了新的meteor-tool,但是我没有失败原因我猜测可能是网址的域名或者IP地址有变化,因为我一直打不开那个网址。但是我也不知道更换之后的新网址或者新IP地址是什么,所以这种方法也失败,再下一个
多说一句,这个方法其实很靠谱,逻辑上也没有问题,操作简单,值得一试~还是那句话,我所列出的所有方法只是我尝试之后失败的方法,在不同环境或者版本下尝试也可能会成功。
5.3 GitHub中下载release版本
尝试了一些安装方法都失败之后,我开始打算下载1.4.1.1的Meteor包再次手动安装,我在GitHub上找到了一个叫做meteor-release-1.4.1.1的安装包(网址:https://github.com/meteor/meteor/releases)
meteor-release-1.4.1.1 tag界面
但是这里有一个很坑的地方,在release界面中没有办法通过输入第几页的方式翻到后页,所以为了寻找1.4.1.1版本,我从2.0版本开始一页一页往后翻大概翻了二三十页终于找到了1.4.1.1的安装包:
meteor-release-1.4.1.1安装包下载界面
在我好不容易找到了这个下载地址之后,发现在GitHub上其实可以直接搜索1.4.1.1然后跳转到相应的页面不过在下图->跳转的页面上只能下载zip格式的安装包,而上图->一页一页翻到的页面中可以下载zip和tar.gz两种形式的安装包:
搜索1.4.1.1即可跳转
在下载这个包的过程中我下载失败了几次,有几次下载成功之后还发现压缩包损坏。不过多次下载之后还是成功了,所以说如果一次下载不了,就多下载几次试试看解压方式和Meteor安装包相同,先使用7-Zip然后使用管理员运行WinRAR解压:
meteor-release-1.4.1.1安装包下载成功
解压之后我才发现,这个文件夹中的内容和真正的.meteor文件夹内容相差很多,下面是meteor-release-1.4.1.1解压后文件夹下的部分文件:
meteor-release-1.4.1.1文件夹下部分文件
这是.meteor文件夹下的内容:
Meteor2.0文件夹下文件
我尝试将环境变量路径设置成release1.4.1.1文件夹的路径,但是无法运行Meteor。之后我还尝试使用release1.4.1.1中的meteor-tool包替换掉Meteor中的meteor-tool包,结果也失败了,在这个过程中,我还发现这两个包的内容也不同
下面是release1.4.1.1\packages\meteor-tool下的文件:
meteor-release-1.4.1.1下meteor-tool文件夹下文件
这是.meteor\packages\meteor-tool下的部分文件:
Meteor2.0下meteor-tool文件夹下部分文件
所以这个方法也失败了。这里还需要说明一点,只替换meteor-tool包其实是不够的,我在成功安装了真正的Meteor1.4.1.1之后尝试过替换包的方法,但是程序会继续安装其他版本的其他安装包。所以说,2.0版本的Meteor不能运行1.4.1.1版本的项目,除非把项目所用到的所有安装包都替换成相应版本。
5.4 再次下载安装包安装
上一个方法失败之后,我就意识到,除非下载Meteor1.4.1.1版本的安装包重新安装,否则这个项目是运行不了了。其实这个方法我在一开始就想过,只是找了好久都没有找到安装包的链接。上一篇中成功下载Meteor是通过网址:https://packages.meteor.com/bootstrap-link?arch=os.windows.x86_64 不过这个网址只能下载最新版本的Meteor。
我检查了一下下载地址:
https://static-meteor.netdna-ssl.com/packages-bootstrap/2.0/meteor-bootstrap-os.windows.x86_64.tar.gz
本想通过把2.0修改成1.4.1.1之后下载,奈何网址错误,找不到安装包:
网址修改参数后无法找到安装包
这之后我又纠结了很久,找了很久的资料,终于在一个帖子里无意中看到有人的下载地址后缀是x86_32,没有报什么希望的我尝试改了一下后缀,居然就开始下载了谁能想到,答案竟是如此的简单。
分享一下下载成功的地址:
https://static-meteor.netdna-ssl.com/packages-bootstrap/1.4.1.1/meteor-bootstrap-os.windows.x86_32.tar.gz
我又尝试输入了几个1.x的版本,发现也可以下载,但是输入2.0就不可以。这里也没有什么官方文件的说明,我猜测还是和版本的出版时间不同有关。
下载之后的步骤和安装Meteor一样,解压之后.meteor文件夹还是存放在C:\Users\用户名\AppData\Local\.meteor下,删除原.meteor文件夹或者覆盖安装并选择替换所有原文件都可以。解压完成后进入命令提示符界面输入meteor --version就会发现Meteor的版本已经变成了1.4.1.1:
Meteor版本变为1.4.1.1
最后贴上1.4.1.1版本的脚本文件地址: https://install.meteor.com/?release=1.4.1.1 想查看其他版本的脚本文件只需要替换版本号就可以了,虽然我感觉内容都差不多,但还是贴在这里,按需查看~
在脚本文件中,我们可以看到一个安装地址
https://static-meteor.netdna-ssl.com/packages-bootstrap/${RELEASE}/meteor-bootstrap-${PLATFORM}.tar.gz
这个地址就是Meteor安装包的通用地址,只要填入版本号和系统类型就可以下载了,Linux和OSX系统都适用。
脚本文件中的下载安装包通用地址
例如在Linux系统上下载1.2.1版本Meteor:
https://static-meteor.netdna-ssl.com/packages-bootstrap/1.2.1/meteor-bootstrap-os.linux.x86_64.tar.gz
在OS X系统下下载1.2.1版本Meteor:
https://static-meteor.netdna-ssl.com/packages-bootstrap/1.2.1/meteor-bootstrap-os.osx.x86_64.tar.gz
很奇怪,在这两个系统上后缀又都是x86_64了,所以说如果下载哪个版本的时候显示找不到文件,就多试几个版本号好了
另外再分享一个网址,忘记在哪里看到的了,但是作用和上面的网址一样,都可以成功下载安装包:https://d3sqy0vbqsdhku.cloudfront.net/packages-bootstrap/${RELEASE}/meteor-bootstrap-${PLATFORM}.tar.gz
到这里,所有的Meteor安装和配置笔记就全部完成了感叹一句,真是不容易。
写在最后
其实写完这些内容之后,感觉安装和配置Meteor其实一点也不难,可能所有的事情都是这样,知道答案了之后总会觉得问题很简单。不过当时在安装的时候不断失败,安装不断报错又想不出解决方案的时候,还真的挺迷茫的。
我在这里列出来的内容只是记忆比较深刻的一些坑,还有一些方法可能试过就直接放弃然后寻找下一个了。比如有个方法是关掉防火墙再安装Meteor我还真的照做了,但是除了更加担心病毒入侵电脑之外并没有什么效果。
还有,我记得下载release1.4.1.1的时候不确定怎么使用,找了半天终于找到了一篇安装教程,一眼看上去还挺靠谱,直到看到那句“我的Meteor版本是最新的0.7.0.1”再一看发表日期2014年,一时间竟不知道要不要继续看下去。
这三篇原本计划三天写完,但是写作期间重写了第一篇中npm的部分,在第三篇快写完的时候又补写了使用release降级版本的部分。断断续续就写了一个多星期,一共一万+字。在写的过程中我也算是回顾了自己磕磕绊绊的安装历程,现在想起来依旧成就感满满,总之,这三篇我非常满意
最后,本系列完结,撒花