TOGOUTECH

Jenkins发布uniapp开发的H5遇到的问题

国服第二切图仔 2025-02-18 原文

目录

​编辑 

前言:

一、问题:        

二、解决经历:

        1、思路1(不成功):

       2、 思路2(成功):        

三、原因分析:

总结


前言:

       背景:由于历史原因,公司有个历史项目使用vue开发的公众号H5,原生开发的微信小程序。两端功能的完全一样,但是需要维护两个项目,最近客户提了需求需要修改部分功能,博主接到需求后,觉得维护两套代码不仅是重复开发,测试起来也麻烦,因为之前是两个人开发不同端的缘故,导致大部分的bug都是因为两端不一致产生的。为了节省时间和维护成本,提升开发测试效率,在反复对比调研,最终选择了uniapp技术框架融合两端进行重构。


一、问题:        

        公司使用Jenkins发布公众号H5,在使用uniapp之前,发布一直很稳定,更换uniapp后,发布公众号H5偶尔就会莫名的出现异常,搞得我和运维都很头疼,报错如下:


二、解决经历:

        异常抛出无法定位是前端问题还是运维部署的问题,一开始只能走常规的Jenkins报错搜索流程,但是这个很奇怪Jenkins发布正常,只是项目没办法运行,只有控制台上诉截图的错,所以根本就找不到对应的解决方案,只能继续在猜测是不是Jenkins这里是不是有问题。

        1、思路1(不成功):

        因为本地编译,本地打包发布都可以成功,后来猜测是不是本地的node版本跟Jenkins线上配置的node版本不对呢,于是我们进行了又一次的尝试,将本地的node版本修改到跟线上一样尝试排错,不试还好,一试吓一跳,试过之后本地打包也有问题了。还好之前做了一下备份,不然备用的发版方案都没有了...

       2、 思路2(成功):        

        再调整思路,本地调试发现报错的地方指向的位置用的 async+await ,于是就怀疑是不是node中解析ES6转ES5的babel插件版本有问题,因为我本地一直用的是yarn,这次尝试删除 node-modules,node 版本还是固定在 14,使用npm install,然后npm run serve试试,最后可以了.


三、原因分析:

        yarn install 报错的原因是因为 npm 和 yarn 安装依赖时合并策略不同,导致依赖版本与预期不同导致。
如果仍要通过 yarn 管理依赖,可修改项目根目录 package.json 中 devDeps 依赖 @babel/runtime 的版本为 ~7.17.9,并增加

···
"resolutions":{
"@babel/runtime": "~7.17.9"
}
···

锁定该依赖版本。


总结

        问题发现到解决,一开始方向不对以为是Jenkins的问题,浪费了些精力,然后调整方向,一直到之后找到解决方案。虽然很曲折,但还是很开心。故记录一下。希望这个记录能帮到看到这篇文章的小伙伴。

有关Jenkins发布uniapp开发的H5遇到的问题的更多相关文章

  1. javascript - 如何生成包含可动态添加和删除行的表格的 Div? - 添加了 JSfiddle - 2

    在JSFiddle中,我尝试使用javascript动态生成div。这些div将包含表格,其中最后两行可以使用添加按钮递增。我试过fiddle中的代码。ins_row()函数用于在表格中添加在div中生成的行。addEvent()函数用于生成div当单击“添加产品”按钮时,将生成一个包含一行表格的div。当点击添加按钮时,最后两行应该根据点击次数继续添加。如果直接点击div的删除按钮,则应删除整个表格和div。当直接点击生成行的删除按钮时,应该只删除该行而不是整个div。问题这里的问题是正在生成带表格的div,但我不知道如何在表格中添加行。Seeitinactionhere预期输出注意

  2. javascript - Flash 运行时在使用 PLupload 的 IE8 中不起作用 - 2

    我在$(function(){...});正文中有简单的javascript函数varuploader=newplupload.Uploader({runtimes:'html5,flash,silverlight',browse_button:'pickfiles',container:'uploader',max_file_size:'20mb',unique_names:true,multiple_queues:false,//drop_element:'dropzone',url:'/Home/Upload',flash_swf_url:'../../../Scripts/up

  3. 基于本地时钟的 Javascript 事件触发器 - 2

    我有一个场景,其中一台客户端PC将驱动多个LCD显示器,每个显示器显示一个浏览器窗口。这些浏览器窗口使用jquery显示动画循环中的不同数据。我需要确保两个浏览器可以同步旋转以完全同时旋转,否则它们将在不同时间显示动画。所以我的问题是-我可以触发jquery以根据本地PC时钟交替显示内容吗?例如每次时钟秒==0,显示版本1,每次时钟秒==30,显示版本2等等? 最佳答案 这是(根据我的经验)让计时器尽可能接近时钟时间触发的最精确方法://getcurrenttimeinmsecstonearest30secondsvarmsecs=

  4. javascript - 如何像 jsfiddle.net 那样调整多个相邻文本区域的大小? - 2

    如何像jsfiddle.net网站一样,通过在区域1、2、3上拖动鼠标来调整textarea的大小?我的代码是:HTML:ABCDJS:$(function(){window.onresize=resize;resize();});functionresize(){varh=(window.innerHeight||(window.document.documentElement.clientHeight||window.document.body.clientHeight));vardivHight=20+$("#div_left").height();//20=bodypaddin

  5. javascript - 真实世界 URL 的 URL 验证正则表达式 - 2

    我想验证给定的字符串是URL。匹配文本中的URL也很好,但不是必需的。我已经搜索并进行了实验,但到目前为止,我还没有找到可以满足这些要求的东西:不得接受在被视为链接时会带来安全风险的字符串。例如,clickme是一个有效的HTML元素,并且至少在某些浏览器中确实有效(引发警报等)。我担心如果我允许任意方案(见下文),它可能会损害安全性(如前所述,例如,此处:WhatisthebestregularexpressiontocheckifastringisavalidURL?)。必须在JavaScript中正常工作。如果它在Java中也能同样工作,那就太好了——我正在GWT中开发,所以这很

  6. javascript - 模块模式中的构造函数 - 2

    在javascript中使用模块模式时,应该如何定义构造函数(如果有的话)。我希望我的构造函数适合标准模块模式而不是全局的。为什么这样的东西不起作用,它完全是胡说八道吗?varHOUSE=function(){return{Person:function(){varself=this;self.name="john";functionname(){returnself.name;}}};}();varme=newHOUSE.Person();alert(me.name()); 最佳答案 您的代码几乎没问题。但是,函数name()不是

  7. javascript - 有没有办法获得正则表达式模式的所有可能结果? - 2

    有什么方法可以得到正则表达式模式的所有可能结果吗?。我所看到的一切都指的是针对字符串进行评估的模式。但我需要的是像这样的模式:^EM1650S(B{1,2}|L{1,2})?$生成所有可能的匹配项:EM1650SEM1650SBEM1650SBBEM1650SLEM1650SLL 最佳答案 在一般情况下,不会。在这种情况下,您几乎没有解决方案空间。有一个sectioncoveringthisinHigherOrderPerl(PDF)和一个Perlmodule.我从来没有在其他任何地方重新实现它,但我遇到了类似的问题,这个解决方案足

  8. javascript - 平滑的 svg 路径连接 - 2

    我有一组随机点,想用raphaeljs创建一个平滑的svg形状。为了连接这些点,我使用了catmull-rom-spline。问题是路径闭合的点不平滑。这是我项目中的示例路径:M125,275R125,325175,325225,325275,325225,275175,275125,275Z我还创建了一个jsfiddle:http://jsfiddle.net/ry8kT/这可以用catmull曲线实现吗?如果没有,能否请您举例说明如何获得完全平滑的形状?非常感谢,麦克法兰 最佳答案 我自己修好了:我没有使用catmullrom样

  9. javascript - 如何将我的本地 javascript 变量设置为远程网站上的 json 数据 - 2

    我的网站上有一个javascript代码,有一个变量:varremoteJsonVar;另一方面,远程网站上有一个json文件https://graph.facebook.com/?ids=http://www.stackoverflow.com我需要将变量remoteJsonVar设置为这个远程jason数据。我确信这很简单,但我找不到解决方案。一个小的工作示例会很好。 最佳答案 因为您正试图从不同的源获取数据,如果您想完全在客户端执行此操作,您可以使用JSON-P。而不仅仅是JSON,因为SameOriginPolicy.如果您

  10. javascript - 从在 chrome 和 firefox 上运行的 html 页面调用 .dll 函数 - 2

    我有一个用C++编写的dll。现在我需要从html页面调用dll中的函数。我通过在vbscript(Activex)中调用dll来完成此操作,这样我就可以在IE中运行。现在我需要在Chrome和Firefox上运行它。我必须做什么,是只需要用javascript编写还是需要为此开发任何扩展?任何人都可以为此提供一个带有简单演示的解决方案吗?提前致谢。 最佳答案 在为所有浏览器创建不可移植的扩展之前,您没有机会。Firefox允许您创建XPI扩展名“插件”Chrome有extensionsDLL文件没有跨平台解决方案,但是,您可以尝试

随机推荐