Angular4 编译项目,报found version 4, expected 3错误的解决办法

  1. 要搭建一个自动化工作平台,所以将代码发到Jenkins上,进行编译和上传。但是,在编译的时候就出了问题。报了这个found version 4, expected 3错误。—— 可是我自己在自己的编辑器上编译是没有问题的,所以我就很纳闷。—— 求助了大佬后,大佬只说了一句:“重新找个‘纯净’的机器来编译试试看。”…于是我就找了一台没有编译器,也没有装过nodejs的电脑来重新走这些步骤,拉下项目,开始编译,噔噔噔也报了一样的错误,原来是我自己的编译环境污浊了啊这我就不淡定了,万一别人下载了项目,结果编译出错,那饭碗保不住了。于是,来好好处理吧。

  2. 报的错误如下:
    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,两年前的老版本了。

  3. 得,怎么解决?就按部就班的,降版本咯。于是,直接就降版本了。可是,好像没用啊。于是,又开始升版本。结果也没有用…无语了。

    升降版本用这招:
    npm install 控件名@版本号 --save
    最好再补个
    npm install
    或者
    npm i
    

    然后,我又在网上找到了一个很无厘头的方法:在app.routing.ts中随便敲几个空格再编译。依旧无效,怎么办,怎么办????
    如果你碰到了和我一样的情况,那么就继续往下看吧。

  4. 经过了漫长的摸索,找到了一个办法:

    	npm cache verify;
        npm config set registry https://registry.npm.taobao.org;
        npm config get registry;
        npm install [email protected] --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:因为在这里配置了更新插件版本,所以,编译的速度会下降了一些。

  5. 举一反三:如果不是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
    

    基本上就是这样了。希望能帮到大家!

    如果还有时间的话,就听听我的收获吧:

    1. 一个良好的编码习惯和思维还是要有啊~
    2. 根据墨菲定律来说:解决方法其实就在眼前,但是,往往都是最后才发现。先把眼前的简单的方法都走一遍吧,不要用脑子来反驳自己。
    3. 如果一个bug,你想了很久,也用了很多方法都没解决,那么就不要折磨自己了,毕竟花了几个小时都毫无进展的,再多花几个小时也不会解决。换个问题解决吧,或者离开座位走一走,换个心情,换个思维,说不定灵光一闪~
    4. 不要学我,思考那么久,如果可以就直接请教吧,时间才是最宝贵的。

猜你喜欢

转载自blog.csdn.net/jiangxinyu50/article/details/90754327
今日推荐