-
要搭建一个自动化工作平台,所以将代码发到Jenkins上,进行编译和上传。但是,在编译的时候就出了问题。报了这个found version 4, expected 3错误。—— 可是我自己在自己的编辑器上编译是没有问题的,所以我就很纳闷。—— 求助了大佬后,大佬只说了一句:“重新找个‘纯净’的机器来编译试试看。”…于是我就找了一台没有编译器,也没有装过nodejs的电脑来重新走这些步骤,拉下项目,开始编译,噔噔噔也报了一样的错误,原来是我自己的编译环境污浊了啊这我就不淡定了,万一别人下载了项目,结果编译出错,那饭碗保不住了。于是,来好好处理吧。
-
报的错误如下:
09:55:21 ERROR in Metadata version mismatch for module /var/jenkins_home/workspace/TEST.SkylotFront/node_modules/ngx-weui/utils/types.d.ts, found version 4, expected 3 09:55:21 ERROR in ./src/main.ts 09:55:21 Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in '/var/jenkins_home/workspace/TEST.SkylotFront/src' 09:55:21 @ ./src/main.ts 3:0-74 09:55:21 @ multi ./src/main.ts
可以看出,我是因为ngx-weui这个插件版本的问题报的错。这个问题是“我的插件版本高过了预期的版本。”真的是搞笑啊,我的这个控件版本本来就很低了,1.0.15呢,现在最高是8.0.0,两年前的老版本了。
-
得,怎么解决?就按部就班的,降版本咯。于是,直接就降版本了。可是,好像没用啊。于是,又开始升版本。结果也没有用…无语了。
升降版本用这招: npm install 控件名@版本号 --save 最好再补个 npm install 或者 npm i
然后,我又在网上找到了一个很无厘头的方法:在app.routing.ts中随便敲几个空格再编译。依旧无效,怎么办,怎么办????
如果你碰到了和我一样的情况,那么就继续往下看吧。 -
经过了漫长的摸索,找到了一个办法:
npm cache verify; npm config set registry https://registry.npm.taobao.org; npm config get registry; npm install ngx-weui@1.0.10 --save; npm install; npm run build --prod --env=${env} -base-href ./;
第1句是清除npm的缓存:当清node_modules 出现某一些包错误时候,查不到原因时候,可以适当的清除缓存试试。删掉重新安装。 可以是npm cache clean;
第2句是设置为淘宝镜像:因为我发现node_modules的文件,无论我怎么升降版本,都会与我的本地可编译文件不一样,所以一查,不是淘宝镜像。为了统一,于是设置为淘宝镜像。
第3句是查询一下当前的镜像是什么的,这个可以不用。
第4句是用命令的方式去更新出问题的插件版本,因为仅有第1、第2句和第5句的时候,好像也没有更新node_modules,删掉重新下载也没用。于是就想着在编译的时候多出一步去处理这个版本的问题。
第5句更新node_modules。
第6句编译。
PS:因为在这里配置了更新插件版本,所以,编译的速度会下降了一些。
-
举一反三:如果不是Jenkins,就是普通的编译出了问题怎么办?
第一,先尝试删掉node_modules,再重新npm install回来看看。
第二,第一步如果不行,就直接降版本吧,版本没有低的,只有更低和最低的。所以,我的控件版本虽然低,但是,还是降到了更低。从1.0.15降到了1.0.10,导致有些功能要重写。
PS:在一步一步降版本的过程中,有时候也会出错的,所以,我的建议是,删除node_modules之后或者升降版本之前,都来一次npm cache clean 或者 npm cache verity,清清缓存。总有些莫名其妙的错误是由缓存造成的,所以,尽可能的避免吧。第三,同时,也要检查一下,自己的地址是用的淘宝镜像还是原地址?这些也是很重要的,下载出来的东西有些就不一样,无语了。
设置淘宝镜像: npm config set registry https://registry.npm.taobao.org 配置后可通过下面方式来验证是否成功: npm config get registry
基本上就是这样了。希望能帮到大家!
如果还有时间的话,就听听我的收获吧:
- 一个良好的编码习惯和思维还是要有啊~
- 根据墨菲定律来说:解决方法其实就在眼前,但是,往往都是最后才发现。先把眼前的简单的方法都走一遍吧,不要用脑子来反驳自己。
- 如果一个bug,你想了很久,也用了很多方法都没解决,那么就不要折磨自己了,毕竟花了几个小时都毫无进展的,再多花几个小时也不会解决。换个问题解决吧,或者离开座位走一走,换个心情,换个思维,说不定灵光一闪~
- 不要学我,思考那么久,如果可以就直接请教吧,时间才是最宝贵的。
Angular4 编译项目,报found version 4, expected 3错误的解决办法
最新推荐文章于 2022-10-22 14:55:08 发布