uni-app本身不自动检查更新,关闭提示需停掉检查逻辑、移除弹窗调用、禁用updatemanager监听及第三方插件初始化,并通过条件编译和环境判断精准屏蔽。

uni-app 本身不会主动“自动检查更新”,真正触发检查行为的是你写的代码——比如调用了 uni.getUpdateManager() 或 plus.runtime.getProperty 并发起了请求。关闭提示,本质是**停掉检查逻辑、移除弹窗调用、避免监听回调**。
删掉或禁用 updateManager 相关监听
微信小程序端的更新提示几乎都来自 uni.getUpdateManager() 的三个事件监听:onCheckForUpdate、onUpdateReady、onUpdateFailed。只要没注册它们,就不会弹窗。
- 检查
App.vue的onLaunch或onShow中是否写了类似updateManager.onUpdateReady(...)的代码,整段删掉或注释掉 - 不要在任意地方调用
updateManager.applyUpdate(),否则即使没弹窗,也会静默触发重启 - 如果用了第三方升级插件(如
app-upgrade),确认是否在main.js或App.vue中执行了init()或自动 check
屏蔽 plus.runtime 版本检查逻辑(仅 App 端)
App 打包后若仍弹窗,大概率是你自己写的检测逻辑在运行,比如定时调用 plus.runtime.getProperty + uni.showModal。这类代码通常藏在 App.vue 的 onLaunch 或封装的 SDK 里。
- 搜索项目中所有
plus.runtime.getProperty、plus.downloader.createDownload、plus.runtime.install的调用点 - 确认是否被
#ifdef APP包裹——如果是,删掉整个代码块,或加条件跳过:if (process.env.NODE_ENV === 'production') { ... } - 特别注意:有些 SDK 会在
onReady或setTimeout后延时检查,得翻完整生命周期钩子
避免热更新干扰(H5/小程序调试时)
开发阶段反复弹窗,很可能是热更新机制在作祟。微信开发者工具或 HBuilderX 的“重新编译”会触发 onUpdateReady,但此时并无真实新包。
- 在
onUpdateReady回调里加个简单判断:if (!res?.hasUpdate) return(虽然文档说 res 为空,但部分版本会返回空对象) - 更稳妥的做法:只在正式环境启用检查,用
process.env.NODE_ENV === 'production'包一层 - H5 端根本不存在
uni.getUpdateManager,如果报错,说明你没做平台判断,加#ifdef MP-WEIXIN条件编译
最常被忽略的一点:你以为关掉了检查,但某个 npm 包(比如旧版 uni-simple-router 或自定义 toast 组件)内部偷偷调用了 getUpdateManager。建议全局搜 getUpdateManager 和 showModal,尤其关注 node_modules 里是否有未声明的依赖在注入逻辑。











