# PC 微信小程序体验版开启调试模式后白屏,报 pageId/webviewId 生命周期错误的排查记录
## 一、问题背景
最近在测试微信小程序体验版时,发现一个比较奇怪的问题:
同一个小程序,在手机微信体验版中运行正常,在微信开发者工具中运行正常,PC 微信不开启调试模式时页面也能正常展示。
但是,只要在 PC 微信中开启调试模式,小程序登录后跳转页面时就会白屏,并出现微信框架内部错误。
一开始怀疑是最近代码改动导致的问题,但后面拿一个 6 月 9 日发布、期间一直没有改动的历史项目版本测试,发现同样会在 PC 微
信开启调试模式后报一样的错误。因此基本可以排除本次业务代码改动导致的问题。
## 二、复现环境
```text
系统:Windows 11 10.0.22621
PC 微信版本:4.1.10.53、4.1.11.24
小程序类型:体验版
运行环境:PC 微信小程序
是否开启调试:开启调试后复现
其他环境表现:
手机微信体验版:正常
微信开发者工具:正常
PC 微信关闭调试模式:页面正常
PC 微信开启调试模式:页面白屏并报错
## 三、问题现象
登录页初始展示正常。
问题主要发生在以下场景:
1. 登录后跳转角色选择页
2. 登录后直接进入首页
3. 游客模式进入首页
4. 进入异常页面后再返回登录页,登录页也可能白屏
报错大致如下:
SystemError (appServiceSDKScriptError)
LifeCycle.load fail: Cannot set a non-pending waiting value
SystemError (jsEnginScriptError)
Framework inner error: adapter page with pageId 101 not exists during creation
SystemError (jsEnginScriptError)
Cannot read properties of undefined (reading 'getCurrentRoutePath')
routeDone with a webviewId 101 is not found
SystemError (appServiceSDKScriptError)
"[Page route 错误(system error)] routeDone with a webviewId 101 is not found"
同时控制台还可能出现:
wx.getSystemInfoSync is deprecated.
[Event] 21 listeners of event WindowInfoChanged have been added, possibly causing memory leak.
unsupported property: font-size: undefinedpx;
## 四、排查过程
### 1. 排查是否为接口问题
因为项目接口当时使用的是 HTTP,在 PC 微信中不开启调试模式时,请求会被拦截。
一开始怀疑是否是 HTTP 请求导致页面异常。
但后续发现:
PC 微信关闭调试模式:请求被拦截,但页面能正常展示
PC 微信开启调试模式:请求能发出,但页面白屏
所以重点不是 HTTP 请求本身,而是开启调试模式后触发了页面白屏。
HTTP 只是让我们必须开启调试模式才能请求接口,从而暴露了这个问题。
### 2. 排查是否为新版本代码问题
为了确认是不是最近发版引入的问题,又测试了一个 6 月 9 日发布的历史项目版本。
这个历史版本中间一直没有改动,之前也能正常使用。
但现在在同一台电脑的 PC 微信中,只要开启调试模式,也会出现相同错误。
因此基本可以排除“本次业务代码改动导致”的可能。
### 3. 对比不同运行环境
对比结果如下:
手机微信体验版:正常
微信开发者工具:正常
PC 微信关闭调试模式:页面正常
PC 微信开启调试模式:白屏报错
历史未改代码版本:PC 微信开启调试模式同样报错
这个对比结果比较关键。
如果是业务代码问题,理论上手机微信、开发者工具、PC 微信关闭调试模式也应该更容易复现。
但现在问题只集中在 PC 微信开启调试模式这个场景。
### 4. 加日志确认崩溃位置
为了定位具体卡在哪一步,临时在登录流程和页面跳转流程中加入日志。
关键日志类似:
登录接口成功
登录后没有默认角色,准备进角色选择页
延迟 reLaunch 已安排
延迟 reLaunch 开始执行
reLaunch 成功
reLaunch 结束
然后页面白屏,并出现微信内部错误。
关键点是:
跳转 API 的 success / complete 已经执行
但目标页面的生命周期日志没有出现
也就是说,业务代码已经发起页面跳转,微信也回调了成功。
但目标页面还没有真正进入业务生命周期,就在微信内部页面创建阶段崩了。
这和报错中的信息是吻合的:
adapter page with pageId xxx not exists during creation
routeDone with a webviewId xxx is not found
getCurrentRoutePath undefined
这些都更像是微信内部页面容器、webviewId、pageId 生命周期状态异常。
## 五、尝试过的处理方式
排查过程中尝试过以下方式,但没有从根本上解决:
1. 回退基础库版本
2. 关闭 useMultiFrameRuntime
3. 关闭 custom-tab-bar
4. 将 tab 页面临时改成静态页面
5. 关闭 sourceMap 上传
6. 暂时禁用 App.vue 的全局页面守卫
7. 调整登录后跳转时机
8. 增加跳转延迟
这些操作均无法解释“历史未改代码版本也同样复现”的现象。
因此最终判断,该问题更可能是 PC 微信小程序调试运行时的问题。
## 六、最终判断
目前倾向于认为:
该问题不是业务代码直接导致,而是 PC 微信小程序体验版在开启调试模式后,页面跳转 / 页面创建阶段存在运行时异常。
判断依据:
1. 手机微信体验版正常。
2. 微信开发者工具正常。
3. PC 微信关闭调试模式页面正常。
4. PC 微信开启调试模式后白屏。
5. 历史未改代码版本也可复现。
6. 报错堆栈来自微信内部框架,不是业务代码堆栈。
7. 页面跳转 API 已回调 success / complete,但目标页面生命周期未执行。
## 七、临时规避方案
目前比较现实的规避方案是:
1. 尽快将接口切换为 HTTPS。
2. PC 微信测试时尽量关闭调试模式。
3. 需要调试时优先使用微信开发者工具或手机真机调试。
4. 将问题反馈到微信开放社区,等待 PC 微信后续版本修复。
如果业务必须在 PC 微信体验版中开启调试模式进行测试,则目前只能记录错误信息并反馈官方。
## 八、总结
这次问题的迷惑点在于,它看起来像是登录后页面跳转导致的白屏,但通过环境对比和历史版本验证,最终发现问题只和 PC 微信开启
调试模式强相关。
尤其是历史未改代码版本也能复现,这一点基本排除了新代码引入问题。
最终结论:
PC 微信小程序体验版开启调试模式后,可能存在页面生命周期 / webviewId / pageId 管理异常,导致页面跳转后白屏。
建议遇到类似问题时,不要只盯着业务代码排查,可以优先做以下对比:
1. 手机微信是否正常
2. 微信开发者工具是否正常
3. PC 微信关闭调试模式是否正常
4. 历史稳定版本是否也复现
5. 控制台报错是否来自微信内部框架
如果以上条件都满足,大概率就不是业务代码本身的问题。

336

被折叠的 条评论
为什么被折叠?



