manifest.json 中没有“V3编译引擎”配置项,启用Vue 3仅依赖vueVersion字段设为"3"或"3.x",并需同步升级vue@^3、@dcloudio/uni-app@^3及适配构建配置与入口文件。

manifest.json 里没有 V3 编译引擎配置项
uni-app 的 Vue 3 支持不是靠 manifest.json 控制的,而是由项目初始化时选择的模板或 vueVersion 字段决定。但要注意:vueVersion 只影响 Vue 运行时版本,不等于“V3 编译引擎”——uni-app 没有独立叫 “V3 编译引擎” 的配置开关。
真正决定是否用 Vue 3 的是 vueVersion 和编译器版本
在 manifest.json 中设置 vueVersion 是启用 Vue 3 的必要条件,但它必须配合正确的项目结构和构建工具链才生效:
-
vueVersion值必须是"3"或"3.x"(如"3.4.21"),不能写成"vue3"或3(数字类型会报错) - 仅设置
vueVersion不够:CLI 项目还需确保package.json中依赖了vue@^3和@dcloudio/uni-app@^3 - 如果使用 Vite 构建(uni-app 3.0+ 默认),
vite.config.js中的vue()插件必须支持 Vue 3,且不能残留vue-template-compiler类旧插件 - HBuilderX 创建的 Vue 3 项目默认生成的是
vueVersion: "3",但 CLI 创建的 Vue 2 项目手动改vueVersion后,需同步升级依赖并清理node_modules
常见错误:改了 vueVersion 却还是 Vue 2 行为
现象包括:Composition API 报错、setup() 不执行、defineProps 未定义。根本原因往往不在 manifest.json,而在构建层不匹配:
- 误以为改完
manifest.json就自动切换——实际要重新运行npm run dev或重启 HBuilderX,且真机调试需云端打包才体现 Vue 3 运行时 -
vueVersion设为"3",但package.json仍锁死vue@2,导致 runtime 版本冲突 - 使用了 Vue 2 风格的
main.js入口(如new Vue(...)),而 Vue 3 要求createApp()方式启动 - 第三方插件(如某些原生插件或
uni-simple-router旧版)未适配 Vue 3,会静默降级回 Vue 2 模式
需要额外注意的兼容边界
即使 vueVersion 正确,以下行为仍受限于 uni-app 平台能力,不是纯 Vue 3 的表现:
-
defineAsyncComponent在 App 端可能不触发 suspense fallback(尤其app-plus低版本) - 响应式语法
ref()/reactive()在 nvue 页面中部分生命周期钩子内不可用(需用getCurrentInstance获取) -
manifest.json的app-plus下某些字段(如nvueCompiler)与 Vue 3 无关,它控制的是底层渲染器,不是 Vue 版本 - 条件编译
// #ifdef APP-VUE仍存在,但 Vue 3 项目应优先用// #ifdef APP-PLUS,因为APP-VUE专指旧版 WebView 渲染路径
真正起作用的只有 vueVersion 字段本身,其他所谓“V3 编译引擎”配置都是误解。改完记得删 node_modules 和 dist 目录再重装依赖,否则缓存容易掩盖问题。


















