uniapp + Vue3項目中安裝和使用uView Plus的完整配置指南
問題概述
11:02:27.757 at pages/index/index.vue:1:26
11:02:27.757 1 | import __easycom_0 from ‘C:/Users/xuhui/Desktop/web/uni-embroiderymachine/components/uni-icons/uni-icons.vue’;import { resolveDynamicComponent as __resolveDynamicComponent } from ‘vue’;import { resolveEasycom } from ‘@dcloudio/uni-app’;import ‘@dcloudio/uni-components/style/view.css’;import { View as __syscom_1 } from ‘@dcloudio/uni-h5’;
11:02:27.758 | ^
11:02:27.758 2 | const _sfc_main = {
11:02:27.758 3 | data() {
11:13:16.693 at main.js:5:19
11:13:16.693 3 | import App from ‘./App’
11:13:16.693 4 | import messages from ‘./locale/index’
11:13:16.693 5 | import uView from “uview-ui”;
11:13:16.694 | ^
11:13:16.694 6 |
11:13:16.694 7 |
11:13:16.694 [plugin:vite:import-analysis] Failed to resolve import “uview-ui” from
11:13:16.694 at main.js:5:19
11:13:16.695 3 | import App from ‘./App’
11:13:16.695 4 | import messages from ‘./locale/index’
11:13:16.695 5 | import uView from “uview-ui”;
11:13:16.695 | ^
11:13:16.695 6 |
11:13:16.695 7 |
環(huán)境要求
- uniapp Vue3 項目
- Node.js 14+
- uView Plus 3.x
第一步:項目初始化與依賴安裝
1.1 正確安裝依賴
# 卸載舊版本(如存在) npm uninstall uview-ui # 安裝 uView Plus npm install uview-plus@latest # 安裝必要依賴 npm install @uni-helper/uni-network

1.2 驗證安裝
# 檢查安裝結(jié)果 npm list uview-plus npm list vue
確保輸出中:
- vue 版本為 3.x
- uview-plus 版本為 3.x
- 沒有 uview-ui
第二步:核心配置文件
2.1 main.js 配置(關(guān)鍵!)
import { createSSRApp } from 'vue'
import { createI18n } from 'vue-i18n'
import App from './App'
import messages from './locale/index'
import uViewPlus from 'uview-plus'
// i18n 配置 - 注意 legacy: false
const i18n = createI18n({
legacy: false, // 必須為 false 以支持 Composition API
locale: uni.getLocale() || 'zh',
fallbackLocale: 'zh',
messages,
warnHtmlMessage: false
})
export function createApp() {
const app = createSSRApp(App)
// 先注冊 uView Plus
app.use(uViewPlus)
// 后注冊其他插件
app.use(i18n)
return {
app
}
}
2.2 vite.config.js 配置(必需)
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
export default defineConfig({
plugins: [uni()],
define: {
// 解決 vue-i18n 警告
__VUE_I18N_FULL_INSTALL__: true,
__VUE_I18N_LEGACY_API__: false,
__INTLIFY_PROD_DEVTOOLS__: false,
},
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "uview-plus/theme.scss";' // 關(guān)鍵:預(yù)加載 SCSS 變量
}
}
},
optimizeDeps: {
include: ['uview-plus'] // 強制預(yù)構(gòu)建
}
})
2.3 樣式配置
App.vue:
<script setup>
// 可選的全局邏輯
import { onLaunch } from '@dcloudio/uni-app'
onLaunch(() => console.log('App Launch'))
</script>
<template>
<!-- 保持為空 -->
</template>
<style lang="scss">
/* 正確的引入順序 */
@import "uview-plus/theme.scss"; /* 1. 變量定義 */
@import "uview-plus/index.scss"; /* 2. 樣式文件 */
/* 3. 全局樣式 */
page {
background-color: #f8f8f8;
font-size: 28rpx;
}
.container {
padding: 30rpx;
}
</style>
uni.scss:
// 可選的全局變量 $primary-color: #2979ff; // 注意:不要在 uni.scss 中重復(fù)引入 uview-plus 樣式 // 避免變量沖突
第三步:故障排除方案
3.1 組件注冊失敗解決方案
方案A:手動注冊組件
// main.js 中追加
import { UButton, UToast, UIcon, UTag } from 'uview-plus/components'
export function createApp() {
const app = createSSRApp(App)
app.use(uViewPlus)
// 手動注冊確保組件可用
app.component('u-button', UButton)
app.component('u-toast', UToast)
app.component('u-icon', UIcon)
app.component('u-tag', UTag)
app.use(i18n)
return { app }
}
方案B:動態(tài)組件加載
<template>
<component
v-if="UButton"
:is="UButton"
type="primary"
text="動態(tài)加載"
@click="handleClick"
></component>
</template>
<script setup>
import { ref, onMounted, shallowRef } from 'vue'
const UButton = shallowRef(null)
onMounted(async () => {
try {
const components = await import('uview-plus/components')
UButton.value = components.UButton
} catch (error) {
console.error('組件加載失敗:', error)
}
})
</script>
3.2 SCSS 變量錯誤解決方案
創(chuàng)建變量覆蓋文件:
// scss/variables.scss // 手動定義缺失的變量 $u-border-color: #e4e7ed !default; $u-type-primary: #2979ff !default; $u-type-success: #19be6b !default; // ... 其他變量
在 App.vue 中優(yōu)先引入:
<style lang="scss"> /* 1. 自定義變量 */ @import "@/scss/variables.scss"; /* 2. uView Plus 樣式 */ @import "uview-plus/theme.scss"; @import "uview-plus/index.scss"; </style>
第四步:完整測試頁面
<!-- pages/index/index.vue -->
<template>
<view class="container">
<text class="title">uView Plus 測試頁面</text>
<u-button
type="primary"
text="主要按鈕"
@click="showToast"
></u-button>
<u-button
type="success"
text="成功按鈕"
custom-style="margin-top: 20rpx;"
></u-button>
<view class="component-group">
<u-tag text="標(biāo)簽" type="primary"></u-tag>
<u-icon name="home" size="28" color="#2979ff"></u-icon>
</view>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script setup>
import { ref } from 'vue'
const uToast = ref()
const showToast = () => {
uToast.value?.show({
type: 'success',
message: 'uView Plus 配置成功!',
duration: 2000
})
}
</script>
<style scoped>
.container {
padding: 40rpx;
}
.title {
font-size: 36rpx;
font-weight: bold;
color: #333;
display: block;
text-align: center;
margin-bottom: 40rpx;
}
.component-group {
margin-top: 30rpx;
display: flex;
align-items: center;
gap: 20rpx;
}
</style>
第五步:常見問題診斷清單
5.1 問題診斷流程
檢查控制臺錯誤
- 組件解析錯誤 → 檢查 main.js 注冊
- SCSS 變量錯誤 → 檢查 vite.config.js 和引入順序
- Vue API 錯誤 → 檢查 Vue 版本兼容性
驗證文件結(jié)構(gòu)
node_modules/uview-plus/ ├── index.js # 主入口 ├── theme.scss # 主題變量 ├── index.scss # 樣式文件 └── components/ # 組件目錄
檢查版本兼容性
npm list vue uview-plus
5.2 強制清理重建
# 完全清理 rm -rf node_modules package-lock.json npm cache clean --force # 重新安裝 npm install # 驗證安裝 npm run dev:mp-weixin
總結(jié)
到此這篇關(guān)于uniapp + Vue3項目中安裝和使用uView Plus的完整配置指南的文章就介紹到這了,更多相關(guān)uniapp + Vue3使用uView Plus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue Nprogress進度條功能實現(xiàn)常見問題
這篇文章主要介紹了vue Nprogress進度條功能實現(xiàn),NProgress是頁面跳轉(zhuǎn)是出現(xiàn)在瀏覽器頂部的進度條,本文通過實例代碼給大家講解,需要的朋友可以參考下2021-07-07
vue的表單數(shù)據(jù)收集案例之基本指令和自定義指令詳解
收集表單數(shù)據(jù)可以使用這個v-model實現(xiàn)這個數(shù)據(jù)的綁定,但是在有些輸入框中,還需要一些其他的指令搭配這個v-model指令結(jié)合使用,這篇文章主要介紹了vue的表單數(shù)據(jù)收集,基本指令和自定義指令,需要的朋友可以參考下2023-01-01
vue-router中關(guān)于children的使用方法
這篇文章主要介紹了vue-router中關(guān)于children的使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
詳解vue-cli之webpack3構(gòu)建全面提速優(yōu)化
這篇文章主要介紹了詳解vue-cli之webpack3構(gòu)建全面提速優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
使用vue-element-admin框架調(diào)用后端接口及跨域的問題
這篇文章主要介紹了使用vue-element-admin框架調(diào)用后端接口及跨域的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
如何使用Vue mapState快捷獲取Vuex state多個值
這篇文章主要為大家介紹了如何使用Vue mapState快捷獲取Vuex state多個值實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06

