uni-app 微信小程序发行错误

uni-app 微信小程序发行错误

示例代码:

import { createSSRApp } from "vue";  
import App from "./App";  
import store from "./store";  

export function createApp() {  
    const app = createSSRApp(App);  

    app.use(store);  

    app.config.globalProperties.$store = store;  
    app.config.globalProperties.showToast = function (  
        text,  
        time = 2000,  
        image  
    ) {  
        uni.showToast({  
            title: text,  
            icon: "none",  
            duration: time,  
            image,  
        });  
    };  
    app.config.globalProperties.vibrateShort = function () {  
        return uni.vibrateShort({});  
    };  

    return {  
        app,  
    };  
}  

操作步骤:

场景出现在vue2升级到vue3中。
manifest.json 改了vue3;store里换成了createStore语法;main.js也按要求改了。

预期结果:

实际结果:

点运行没问题,点发行,uniapp编译没问题,但是微信开发工具里会白屏报错

bug描述:

微信小程序项目按uniapp升级指南升级到vue3后,在hbuilder x点运行没有任何问题,在微信开发者工具里显示都很正常,但是点击hbuilder x 发行后微信开发者工具白屏且报错。
项目值用于微信小程序开发,在之前在vue2下运行和发行都没问题。
报错里有一条:Page “pages/tabBar/startLoading/startLoad” has not been registered yet
但是实际上pages.json里是有的。

Image
Image


更多关于uni-app 微信小程序发行错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 微信小程序发行错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据您提供的错误信息和代码,问题很可能出现在Vue 3的异步组件处理与uni-app编译发行时的差异上。

核心问题分析:

  1. Page "pages/tabBar/startLoading/startLoad" has not been registered yet 这个错误表明页面组件在注册完成前就被尝试访问了。
  2. Vue 3的createSSRApp在SSR场景下会采用异步组件加载策略,而微信小程序环境并不支持真正的异步组件。
  3. 发行版本(production)和开发版本(development)的编译行为存在差异,发行版本可能更严格地执行了Vue 3的异步组件规范。

解决方案:

修改您的createApp函数,移除SSR相关代码:

import { createApp } from 'vue'
import App from './App'
import store from './store'

export function createApp() {
    const app = createApp(App)
    
    app.use(store)
    
    // 全局方法挂载
    app.config.globalProperties.$store = store
    app.config.globalProperties.showToast = function(text, time = 2000, image) {
        uni.showToast({
            title: text,
            icon: "none",
            duration: time,
            image,
        })
    }
    app.config.globalProperties.vibrateShort = function() {
        return uni.vibrateShort({})
    }
    
    return {
        app,
    }
}
回到顶部