angular编译版本冲突解决办法总结

2018-08-21 15:28:42 浏览数 (1)

刚刚涉足angular,对于node,npm,typescript等都不太熟悉。网上下载别人源码一编译,报一堆英文错误,死了的心都有了。先来感受一下吧

image.png

image.png

image.png

image.png

经过两天的踩坑,东看看,西查查。终于算是解决了目前项目的错误。虽然不知道为什么,但是可以肯定的是,大部分是因为下载的依赖版本不对导致的。初步总结了以下解决这类问题的方法。

学好英语

手下不能害怕,更不能放弃。英语不好用百度翻译啊。看清楚问题大致的意思是什么,哪个模块导致的。找到罪魁祸首。 说不好有的多红字里就写的有解决办法呢。

理解package.json文件

首先知道NPM依赖包版本号~和^的区别。

代码语言:javascript复制
    "lodash": "^4.17.4",
    "marked": "^0.3.6",
    "moment": "~2.18.1",
    "moment-timezone": "^0.5.13",
~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0

往往一个版本从1.2.0到1.3.0变化是比较大的。

代码语言:javascript复制
我现在所遇到的问题,大部分就是因为^这个导致的。
作者在用的时候,使用npm install -save 命令来安装包的时候,普遍都是^符号,
当我们下载的包的版本已经从1.2.0更新到1.9.8到2.1.0了,
这时候我们使用npm install命令来还原包,
下载的就会是1.9.8版本的包而不是1.2.0版本的。
在我们编译的时候,这就可能会出现错误。

降低版本号

定位出现问题的模块——在package.json文件中找到将^改为~符号——去node_modules下面把该模块的包删掉——重新执行npm install

如果不行,可以试试修改package.json文件后,把node_modules文件夹全部删掉,然后再还原包。

0 人点赞