记一次解决 uni-app 真机运行时导致的白屏问题:Trae vs 通义灵码 vs Cursor

一. 前言

说来奇怪,一直保持正常运行的代码突然间爆出了问题!这套代码打包了 H5 端、小程序端、Android 端、iOS 端等四端应用,打包运行都没有问题,而最近在 Android 端安装应用运行时出现了白屏(white screen)问题。

起初令人费解,这部分代码已经有两年没有改动过了,讲道理不应该出现这种问题。

原因在哪里?最近手贱,升级了 HBuilder X 4.66.2025051912,升级完后运行就出现了这个问题,用真机调试一下看报的什么问题:

而将 HBuilder X 切换到上一个版本后,一切又正常了!也不知道最新版本更新了什么,HBuilder X 真是巨坑!坑了我多次了。

二. 问题分析

最终,坑还得需要有人填,在 uni-app 官方社区检索一下,是否有人遇到同样的问题:

确实有人遇到这种白屏问题,但是出现白屏的原因不一,还得具体问题具体分析。

然而,我的问题从报错日志里不难看出,是在调用 setDefaultLanguage 的方法时,dispatch 方法找不到,undefined 导致运行时异常。

再次检验一下之前写的代码,发现 storeconfig 两个文件出现了循环依赖的问题,导致在 config 文件中调用 setDefaultLanguage 出现异常。

其实这个问题也很好改,但是我试着用 AI 解决一下这个代码问题,正好对比一下 Cursor、Trae 和 通义灵码的能力!

三. Trae 国内版

使用 Trae 的 Builder 模式,选中这两个文件,直接询问:解决这两个文件的循环调用问题。

Trae 的主要修改逻辑是:

  • 移除 config/index.js 文件中对 store 的引用
  • 移除 store/index.js 文件中对 config 的依赖

修改 config 文件

主要是移除 store 依赖,对代码中使用 store 的方法进行删除,还加入了一个无声明的参数:serverInfoParam ?

这代码能跑起来才怪,一看全是问题。不相信这是 Trae!

具体修改的代码如下图:

修改 store 文件

这里 Trae 主要是移除 config 文件中的 env 导入,直接使用了 this.env ?

显然的,有问题,根本就是在乱改,还改不全。

结果看上面就能知道,修改有误,感觉它就在乱改,直接运行不起来。

Trae 也用过一段时间,感觉尚可,但是这个小问题的改动流程实在是不应该。

四. 通义灵码

Trae 并没有完美的修改成功,接下来我们试一下通义灵码的能力。同样的,我在通义灵码的智能会话中,选中这两个文件,直接询问:解决这两个文件的循环调用问题。

修改 config 文件

通义灵码主要对 config 文件进行了以下操作:

  • 移除了 store 和 envConfig 的导入
  • 删除了调用 store 的方法
  • 对 getBaseUrl 提供一个 serverInfo 的入参
  • 导出 DevFactory 方法

代码删除多了,envConfig 的引入为什么给删除了?而且删除了下面代码中还在引用呢,唉。。。

修改 store 文件

结合以上通义灵码给修改的 config 文件,提供了 DevFactory 的导出。

这里主要新增了 DevFactory 导入,修改了 store 里对 locale 值的初始化,而对 getBaseUrl 做出的改动并没有修改。

通义灵码的改动也是一言难进。多删除代码,少使用代码是家常便饭。因此它的改动也是错误的。

通义灵码我用了大概 1 个月左右,在使用期间,体验上有如下问题:

  • 代码生成有误,生成和使用不对应,代码运行不起来
  • 经常性的给删代码,尤其注释,必删
  • 生成的代码变复杂

五. Cursor

通过 Trae 和通义灵码一次性并不能修改成功,同样的逻辑,我直接询问下 Cursor:解决这两个文件的循环调用问题。

使用的是:Composer Agent auto 模式

修改 config 文件

  • 在 config 文件中移除了对 store 的依赖
  • 对使用 store 的方法统一替换成了读取缓存的方式

修改 store 文件

在 store 文件中,主要处理了 state 的初始化问题,对 locale、language、country 的默认值进行处理

以上的代码初步看是没有问题的,在修改完成后,重新运行一下应用,编译成功了,而且是一次性成功。

六. 总结

uni-app 运行时出现的真机白屏问题,需要具体问题具体分析,一般会在报错日志中体现出来。

但是出现白屏问题的原因一般都是在初始化应用的时候,调用报错,包括不限于:

  • Cannot read property 'xxx' of undefined
  • Uncaught ReferenceError: xxx is not defined
  • Uncaught SyntaxError: Invalid or unexpected token

而本文出现的 Cannot read property 'xxx' of undefined 造成的白屏问题解决起来也很简单,只要找到引用对象排查原因即可。所以我使用 AI 来帮我生成代码解决,其实三款 AI 的解决思路相仿,都是想移除对方相互引用的依赖,然后再修改代码。

本篇文章不偏不倚,使用事实说话,本着对初始的场景和参数一致,分别对 Tare、通义灵码、Cursor 的代码生成能力作了一个简单的测试,单单就这几行代码的生成,只有 Cursor 一次性成功了,也许对 Trae 和通义灵码多次询问后也能成功,但 Cursor 一次性成功就给了我们非常好的体验。

所以,谁强谁弱,一目了然,Trae 国际版收费了,据说有更强的能力,但还没有用过,不知道效果如何。

相关推荐
该换个名儿了15 分钟前
git多个commit合并成一个
前端·git
LaoZhangAI17 分钟前
2025最新OpenAI组织验证失败完全解决方案:8种有效方法彻底修复【实战指南】
前端·后端
siwangqishiq230 分钟前
Vulkan Tutorial 教程翻译(三) 绘制三角形 2.1 安装
前端
LaughingZhu30 分钟前
PH热榜 | 2025-06-05
前端·人工智能·经验分享·搜索引擎·产品运营
大模型真好玩31 分钟前
最强大模型评测工具EvalScope——模型好不好我自己说了算!
前端·人工智能·python
Dream耀1 小时前
CSS选择器完全手册:精准控制网页样式的艺术
前端·css·html
wordbaby1 小时前
React 19 亮点:让异步请求和数据变更也能用 Transition 管理!
前端·react.js
月亮慢慢圆1 小时前
VUE3基础之Hooks
前端
我想说一句1 小时前
CSS 基础知识小课堂:从“选择器”到“声明块”,带你玩转网页的时尚穿搭!
前端·javascript·面试