被 UNIAPP 折磨的一天。cherbim3年前发布790用 UNIAPP + Vue3 开发 App ,开发环境下真机和模拟器上一切正常,然而正式打包之后部分安卓手机上高度失效,尝试了各种方法修复无果。我写了个简单的含有组件的 DEMO ,分别用 Vue2 和 Vue3 的方式打包了一次, 发现使用 Vue2 时没有任何问题,用 Vue3 打包时就出现这个问题了,无奈打算降回 Vue2 。正打算降级,突然发现 iOS 上切换页面时高度会上下闪烁一下,百思不得其解。最后发现是 CSS 变量的问题,页面切换时它的值会突然变为 0 ,加载完成后又变回原来的值,而组件里为了兼容底部安全区,使用了这种方式计算。 在 HbuilderX 上个版本里这个 CSS 变量是直接无效为 0 ,当时我是在应用启动时获取了底部安全区的高度,然后通过 style 通过 css 变量提供给组件。前几天看官方说修复了,这才几天过去又出了这种幺蛾子问题?官方说修复好的时候我切换回了使用变量的方式,现在又不得不切换回去。修好页面闪烁的问题,花了一天时间吭哧吭哧的把所有的代码从 Vue3 降级回到了 Vue2 。 切换完之后开始调试,首先是全局组件全部找不到; 我是将所有的全局组件列为一个数组,并使用的方式进行加载。看了一下文档,说是 UNIAPP 为了编译到多平台,使用了静态分析代码,不支持动态加载组件,建议使用他们的方式进行组件注册。那为什么之前 Vue3 我用这种方式就可以动态加载呢?好吧,那就使用进行注册,按照他们的配置要求开启了,并配置了匹配文件夹内组件的正则表达式。配置完成后重新编译,提示我找不到文件,绝了,这是把也当组件给我解析了?得,我手动全部引用一遍吧。搜了下,20 年 3 月就有这个问题,现在还没修?这个 App 里有视频播放的页面,所以用了 UNIAPP 的来开发。首先发现布局全部炸了,分析了一遍之后发现是全部从变了。 按照 UNIAPP 文档的说法,里所有的元素默认都是元素,且方向默认都是。可以在配置文件里修改默认的方向。之前用 Vue3 写的时候,为了和平时开发保持一致,我在配置文件里设置里默认方向为,然而并没有生效。我就按照默认的方式来开发了。 切换回 Vue2 之后,这个配置文件又生效了,当然布局就炸了。修好布局,发现进入页面后总是提示没有登录。这个项目里 api 请求是封装过的,在请求前会从 store 里检查登录状态并从中获取 token 。看了一下,只要是页面调用的 api ,获取 store 里的状态永远是初始值。 看了下文档,哦,页面不支持直接引入 store 使用,只能用或者辅助函数,这是连引入的都影响到了? 行吧,的确是我的锅,没有认真看文档,那为啥下面又正常呢?用开发时,我使用了,一切正常。到了,Mock 失效了,劫持不到请求。无奈只能在公用的 HTTP 请求工具里动手脚,根据请求 url 手动执行 Mock 返回数据。之前使用开发时,页面如果调用了含有的 API ,页面就白屏了,猜测是尚未适配的 store 。于是我把页面用到的几个接口单独一个文件里并出去,在页面里将这几个接口挂载到上供页面使用,在使用时一切正常。切换到之后,可以正常调用了,也就不用在里进行中转了。这时候我发现里有几个接口失效了,排查一番后发现从接口文件里引入的 HTTP 请求路径为。 这些 HTTP 请求路径都是定义的常量字符串,不存在被重写的可能。而且在别的文件里引用都正常,我有些怀疑人生了。 我重启系统并重装了,因为之前也有类似的奇奇怪怪的问题重装之后就正常了。然而这次并没有生效,我都打算关电脑睡觉了,突然发现引入 HTTP 请求路径之后爆的文件都是之前用时在中转文件里曾经引入过的文件。可是现在使用了之后根本就没用到这个中转文件,只是在里引入了一下。然后我去里注释掉引入后就不爆了,但是这是什么魔幻问题???
没有回复内容