一、**错误提示

Module ‘“vue”’ has no exported member ‘createSSRApp’**

二、出现的背景

2023年5月使用vue-cli创建uni-app+vue3+ts的默认项目,使用uview-plus,根据文档使用vue3的方式引入。

三、错误原因

vue-cli创建的项目,使用的并不是vue3,而是vue2,原因各种各样,比如我偷懒用vue ui创建,在图形化界面中选了vue3,但没想到用的还是vue2。

(PS.Vue2.7 是 Vue2.x 的最终次要版本,可以使用部分 Vue3 的特性)

总之,出现vue没有createSSRApp方法的错误,是因为该方法为vue3才有的,一般先查看vue版本是否为vue3。

package.json文件可以查看版本号

"dependencies": {
    "@vue/shared": "^3.0.0",
    "clipboard": "^2.0.11",
    "core-js": "^3.8.3",
    "dayjs": "^1.11.7",
    "flyio": "^0.6.2",
    "uview-plus": "^3.1.30",
    "vue": ">= 2.6.14 < 2.7",    // 注意这里的vue版本
    "vue-class-component": "^6.3.2",
    "vue-property-decorator": "^8.0.0",
    "vuex": "^3.2.0"
  },

四、解决方案

使用vue2+uview-ui@2.0.31

uview-plus适合vue2的方案 uview-ui

五、补充

使用ts时,需要另外定义uview-ui。因为该模组默认定义是any,需要我们将其定义为module,才能正常在ts中使用。

参考文档给的方案。其中refs.d.ts文件可以自行创建在根目录,然后输入内容为 declare module “uview-ui” 。

./refs.d.ts

declare module "uview-ui"

下面是官方方案。

uView 类型定义
基于 uView 2.0.34 版本文档编写

Vue组件
vue <= 2.6 引用 v26.d.ts,需要安装 @vue/runtime-dom
vue >= 3 引用 v3.d.ts
Refs引用 refs.d.ts
tsconfig.json 示例:

{
  "compilerOptions": {
    "types": [
      "@ttou/uview-typings/v26",
      "@ttou/uview-typings/refs"
    ]
  }
}

最终,我的main.ts是这样的。

import Vue from 'vue';
import App from './App.vue';
import './uni.promisify.adaptor';
import uView from "uview-ui";


Vue.config.productionTip = false;

Vue.use(uView);


const app = new (typeof App === 'function' ? App : Vue.extend(Object.assign({ mpType: 'app' }, App)))
app.$mount();
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐