绝妙三招!轻松解决uni-app运行微信小程序报错 routeDone with a webviewId 2 that is not the current page
2022-11-25 09:03:47
uni-app 运行微信小程序时出现“routeDone with a webviewId 2 that is not the current page”错误:终极解决指南
第一步:深入了解问题
当你在兴致勃勃地开发 uni-app 项目时,却突然遇到“routeDone with a webviewId 2 that is not the current page”的报错,你可能会不知所措。不用担心,让我们深入了解一下这个问题,并为你提供一个简单的三步解决方案。
webviewId 和 routeDone
首先,我们需要了解一下“webviewId”和“routeDone”。“webviewId”是一个用于标识 WebView 的 ID,每个 WebView 都有一个唯一的“webviewId”。在 uni-app 中,每个页面都会创建一个 WebView,因此每个页面都有一个唯一的“webviewId”。
其次,“routeDone”是一个事件,表示页面加载完成。当页面加载完成后,WebView 会触发“routeDone”事件。
灰度版本
“灰度”是指将新版本的功能逐步向部分用户开放,以便收集反馈和进行测试。在微信开发者工具中,你可以选择是否将你的项目灰度到某个版本。
错误原因
现在,让我们回到“routeDone with a webviewId 2 that is not the current page”这个错误。这个错误通常发生在以下两种情况下:
- 你在开发 uni-app 项目时,使用了某个灰度版本的基础库。
- 你在微信开发者工具中设置了调试基础库,选择了某个灰度版本的基础库。
当发生上述情况时,WebView 在触发“routeDone”事件时,会使用灰度版本的基础库来处理。然而,当前页面可能使用的是非灰度版本的基础库。因此,WebView 就会抛出“routeDone with a webviewId 2 that is not the current page”这个错误。
第二步:三步解决方案
为了解决这个问题,我们可以通过以下三个步骤来进行:
-
点击微信开发者工具右上方的详情
打开微信开发者工具,在右上方的工具栏中找到“详情”按钮,点击它。
-
点击本地设置
在弹出的菜单中,选择“本地设置”。
-
点击调试基础库,选择低一点的且不在灰度中的版本
在本地设置页面,找到“调试基础库”选项,点击它。在弹出的版本选择框中,选择一个低于当前版本且不在灰度中的版本。
完成以上三步,重新运行你的 uni-app 项目,你会发现报错已经消失,项目可以正常运行了。
第三步:深入探讨
为了帮助你更好地理解和解决这个问题,我们还可以探讨一些更深入的细节和相关知识。
-
使用 Chrome 开发者工具进行调试
你可以使用 Chrome 开发者工具来调试你的 uni-app 项目。在 Chrome 开发者工具中,你可以检查控制台中的错误消息,并在“网络”选项卡中查看请求和响应。这有助于你了解错误发生的根本原因。
-
更新微信开发者工具
确保你使用的是微信开发者工具的最新版本。新版本通常会修复错误并引入新功能。
-
使用 uni-app 提供的工具
uni-app 提供了一系列工具来帮助你开发和调试你的项目。这些工具包括 uni-app CLI 和 uni-app 调试器。
结论
“routeDone with a webviewId 2 that is not the current page”这个错误虽然令人沮丧,但它可以通过几个简单的步骤来解决。通过了解问题的原因、采取合适的步骤并探索其他调试选项,你可以轻松解决这个错误,让你的 uni-app 项目顺利运行。
常见问题解答
-
如何避免这个错误?
为了避免这个错误,请确保你没有在灰度版本的基础库上开发或调试你的项目。
-
我尝试了所有步骤,但仍然出现错误怎么办?
如果你已经尝试了所有步骤,但仍然出现错误,请尝试重新启动微信开发者工具。你还可以检查微信开发者工具的控制台中的错误消息,或在 GitHub 上搜索此错误。
-
灰度版本有什么用?
灰度版本用于逐步向部分用户开放新版本的功能,以便收集反馈和进行测试。
-
什么是 WebView?
WebView 是一个在应用程序中嵌入网页的组件。在 uni-app 中,每个页面都会创建一个 WebView。
-
如何查看当前页面的 webviewId?
你可以在 Chrome 开发者工具中查看当前页面的 webviewId。打开开发者工具,转到“控制台”选项卡,然后在控制台中输入以下代码:
document.documentElement.getAttribute('webviewid')