如题,相同的手机,相同的逻辑。真机运行时内容正常显示,但是打包后安装查看内容没显示,有没有人遇到过这种情况,给一些排查思路
皓峰通讯
- 发布:2026-03-04 14:59
- 更新:2026-03-05 11:19
- 阅读:45
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
根据你描述的情况:“真机运行正常,但打包后安装无内容显示”,这是 uni-app 升级 Vue2 到 Vue3 后常见的白屏问题,尤其在正式包中更易出现。结合知识库和社区经验,以下是排查思路:
✅ 1. 检查是否勾选了必要的 App 模块
参考:app-modules
- 如果你在代码中使用了如
uni.request、uni.getLocation、uni.scanCode等 API,但未在manifest.json→ App模块配置中勾选对应模块,打包后不会报错,但页面不会渲染。 - 真机运行时会有弹窗提示缺失模块,正式包不会提示,直接白屏。
建议:逐项检查 manifest.json → App模块配置,确保所有用到的功能模块都已勾选。
✅ 2. 检查是否使用了不兼容的 API 或语法
社区经验:Vue3 升级后,部分 API 在真机调试时兼容,但打包后因 polyfill 或 tree-shaking 被移除,导致白屏。
排查建议:
- 检查是否使用了
require()、module.exports、process.env等 CommonJS 语法。 - 检查是否引用了不兼容的第三方库(如旧版 Vant、Lodash、Moment 等)。
- 检查是否使用了
plus对象(Vue3 中不再默认注入)。
✅ 3. 检查是否分包配置不当
- Vue3 不会自动拆分
vendor.js,所有 node_modules 默认打进主包,可能导致主包过大,低端设备加载失败。 - 如果你使用了分包,但主包仍过大,建议手动将大库拷贝到分包目录,避免主包超限。
✅ 4. 检查是否开启了原生混淆
- 如果你在
manifest.json中开启了 原生混淆(js/nvue 加密),但未正确配置白名单,可能导致运行时加载失败。 - 建议先关闭混淆测试是否能正常显示,再逐步开启并配置白名单。
✅ 5. 检查是否使用了未正确配置的原生插件
参考:faq-插件不存在
- 如果你使用了原生插件(如
uni.requireNativePlugin),但未在打包时勾选插件,真机运行可用(自定义基座),正式包不可用。 - 检查
manifest.json→ App原生插件配置 → 是否勾选了对应插件。
✅ 6. 检查是否使用了不兼容的语法或标签
- Vue3 不再支持
slot="xxx"写法,需改为v-slot:xxx。 - 检查是否有
<template>标签未闭合、<script setup>使用错误等。
✅ 7. 建议开启调试模式查看日志
- 使用 自定义基座 打包,开启 vConsole 或 uni-app 控制台日志,查看是否有报错。
- 若真机无日志,可尝试使用 adb logcat 或 Xcode 控制台 查看原生日志。
✅ 8. 若仍无法定位,建议提供以下信息给官方
- AppID(用于查看云端打包日志)
- manifest.json 截图
- 控制台报错截图(如有)
- 是否使用自定义基座测试通过
✅ 总结建议
| 排查项 | 是否建议优先检查 |
|---|---|
| manifest.json 模块配置 | ✅ 高优先级 |
| 是否使用不兼容 API | ✅ 高优先级 |
| 是否分包不当 | ✅ 中优先级 |
| 是否开启混淆 | ✅ 中优先级 |
| 是否插件未勾选 | ✅ 中优先级 |
| 是否语法错误 | ✅ 低优先级 |
如你已确认以上都无误,建议提供 AppID 和打包日志,官方可协助查看云端打包详情。
内容为 AI 生成,仅供参考