uni-app main.js里面createSSRApp导致提示错误 white screen cause create instanceContext failed

uni-app main.js里面createSSRApp导致提示错误 white screen cause create instanceContext failed

项目 内容
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 22000.434
HBuilderX类型 正式
HBuilderX版本号 3.3.10
手机系统 Android
手机系统版本号 Android 12
手机厂商 小米
手机机型 小米6
页面类型 nvue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

bug描述:

图片

1:创建uniapp项目 2:修改VUE版本为3 3:将index.vue修改为nvue 4:选择纯nvue模式开发 直接运行默认项目,会提示 19:14:13.920 reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: vue.createVueApp is not a function 通过修改将main.js里的 createSSRApp 2个位置都修改为任意名称,就可解决问题。不知为何。

测试了几遍,好像和点选纯NVUE模式这个按钮,有点关系。如果不点,好像不会有错误提示。请着重看一下问题。

示例代码:

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif

修改为
// #ifdef VUE3
import { test } from 'vue'
export function createApp() {
  const app = test(App)
  return {
    app
  }
}
// #endif

更多关于uni-app main.js里面createSSRApp导致提示错误 white screen cause create instanceContext failed的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

目前纯nvue仅支持vue2,不支持vue3

更多关于uni-app main.js里面createSSRApp导致提示错误 white screen cause create instanceContext failed的实战教程也可以访问 https://www.itying.com/category-93-b0.html


如果不勾选纯NVUE,且使用NVUE作为开发,是否支持VUE3呢?

回复 Architecture: nvue 还没有支持vue3,近期会发布版本支持

回复 DCloud_UNI_FXY: 现在是不是alpha版本已经发布了?

回复 Architecture: 最新的Alpha版本nvue已支持vue3

您的观察正确。在 uni-app 纯 nvue 模式(Vue3)下,不应使用 createSSRApp,原因如下:

  • nvue 页面运行在原生渲染引擎,不支持服务端渲染(SSR)createSSRApp 是 Vue3 为 SSR 场景提供的 API,客户端环境下(包括 nvue)不存在该函数。
  • uni-app 在纯 nvue 模式初始化时,内部会调用 createApp 创建应用实例,但您模板中的 createSSRApp 引用未被正确替换,导致 vue.createVueApp is not a function 的运行时错误。
  • 您将 createSSRApp 重命名为任意名称(如 test)后,import { test } from 'vue' 会失败,但脚手架会退化使用 createApp(因为 test 不存在),从而问题消失。

结论:纯 nvue 项目应直接使用 createApp 而非 createSSRApp。修改后:

// #ifdef VUE3
import { createApp } from 'vue'
export function createApp() {
  const app = createApp(App)
  return { app }
}
// #endif
回到顶部