uni-app vue版本选择vue3时编译到微信小程序目前发现的bug
uni-app vue版本选择vue3时编译到微信小程序目前发现的bug
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | macOS Big Sur 11.5.2 | HBuilderX |
操作步骤:
-
vue3版本下,编译到微信小程序,
main.js中如果初始化使用到uni的api报错,如:let sys=uni.getSystemInfoSync()错误信息:
TypeError: Cannot read property 'getSystemInfoSync' of undefined。。。 -
vue3版本下,组件中使用behaviors编译到微信小程序报错,如
behaviors: ['uni://form-field']错误信息:
ReferenceError: __PLATFORM_PREFIX__ is not defined ...
预期结果:
编译通过,正常运行
实际结果:
出错导致无法运行
bug描述:
-
vue3版本下,编译到微信小程序,
main.js中如果初始化使用到uni的api报错,如:let sys=uni.getSystemInfoSync()错误信息:
TypeError: Cannot read property 'getSystemInfoSync' of undefined。。。 -
vue3版本下,组件中使用behaviors编译到微信小程序报错,如
behaviors: ['uni://form-field']错误信息:
ReferenceError: __PLATFORM_PREFIX__ is not defined ...
更多关于uni-app vue版本选择vue3时编译到微信小程序目前发现的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更新至最新的HBuilderX Alpha
更多关于uni-app vue版本选择vue3时编译到微信小程序目前发现的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
以上错误信息在微信小程序开发工具中提示
现在这个问题解决了吗?我也遇到了
把uni改成wx就正常了 切换vue3运行后uni没有转换 还是用回vue2稳定
behaviors不行
这两个问题确实是 uni-app 在 Vue 3 模式下编译到微信小程序时存在的已知问题。
问题1:main.js 中 uni API 调用报错
这是因为在 Vue 3 项目的初始化阶段,uni 对象尚未挂载完成。解决方案是避免在 main.js 的顶层作用域直接调用 uni API,可以将相关逻辑移至 App.vue 的 onLaunch 生命周期中:
// App.vue
export default {
onLaunch() {
let sys = uni.getSystemInfoSync()
// 后续初始化逻辑
}
}
如果必须在 main.js 中执行,可以改用条件判断或延迟执行:
// main.js
if (typeof uni !== 'undefined') {
let sys = uni.getSystemInfoSync()
}
// 或使用 setTimeout 延迟执行
问题2:behaviors 编译错误
__PLATFORM_PREFIX__ 未定义错误是因为 Vue 3 编译器对 behaviors 的处理机制与 Vue 2 不同。临时解决方案是改用完整的平台前缀:
// 将
behaviors: ['uni://form-field']
// 改为
behaviors: ['wx://form-field'] // 微信小程序平台
或者使用条件编译:
behaviors: [/*#ifdef MP-WEIXIN*/'wx://form-field'/*#endif*/]

