uniapp + Vue3項(xiàng)目中安裝和使用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 項(xiàng)目
- Node.js 14+
- uView Plus 3.x
第一步:項(xiàng)目初始化與依賴安裝
1.1 正確安裝依賴
# 卸載舊版本(如存在) npm uninstall uview-ui # 安裝 uView Plus npm install uview-plus@latest # 安裝必要依賴 npm install @uni-helper/uni-network

1.2 驗(yàn)證安裝
# 檢查安裝結(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)
// 先注冊(cè) uView Plus
app.use(uViewPlus)
// 后注冊(cè)其他插件
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'] // 強(qiáng)制預(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 組件注冊(cè)失敗解決方案
方案A:手動(dòng)注冊(cè)組件
// main.js 中追加
import { UButton, UToast, UIcon, UTag } from 'uview-plus/components'
export function createApp() {
const app = createSSRApp(App)
app.use(uViewPlus)
// 手動(dòng)注冊(cè)確保組件可用
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:動(dòng)態(tài)組件加載
<template>
<component
v-if="UButton"
:is="UButton"
type="primary"
text="動(dòng)態(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 變量錯(cuò)誤解決方案
創(chuàng)建變量覆蓋文件:
// scss/variables.scss // 手動(dòng)定義缺失的變量 $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>
第四步:完整測(cè)試頁面
<!-- pages/index/index.vue -->
<template>
<view class="container">
<text class="title">uView Plus 測(cè)試頁面</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 問題診斷流程
檢查控制臺(tái)錯(cuò)誤
- 組件解析錯(cuò)誤 → 檢查 main.js 注冊(cè)
- SCSS 變量錯(cuò)誤 → 檢查 vite.config.js 和引入順序
- Vue API 錯(cuò)誤 → 檢查 Vue 版本兼容性
驗(yàn)證文件結(jié)構(gòu)
node_modules/uview-plus/ ├── index.js # 主入口 ├── theme.scss # 主題變量 ├── index.scss # 樣式文件 └── components/ # 組件目錄
檢查版本兼容性
npm list vue uview-plus
5.2 強(qiáng)制清理重建
# 完全清理 rm -rf node_modules package-lock.json npm cache clean --force # 重新安裝 npm install # 驗(yàn)證安裝 npm run dev:mp-weixin
總結(jié)
到此這篇關(guān)于uniapp + Vue3項(xiàng)目中安裝和使用uView Plus的完整配置指南的文章就介紹到這了,更多相關(guān)uniapp + Vue3使用uView Plus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Vue實(shí)現(xiàn)可以拖拽的樹形表格實(shí)例詳解
因業(yè)務(wù)需求,需要一個(gè)樹形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合適的,大部分樹形表格都沒有拖拽功能,所以決定自己實(shí)現(xiàn)一個(gè)。這里分享一下實(shí)現(xiàn)過程,需要的朋友可以參考下2018-10-10
利用Vue3+ElementUI樹形菜單實(shí)現(xiàn)層次化用戶界面
ElementUI是一個(gè)超棒的UI框架,它基于Vue.js提供了豐富的組件和樣式,可以幫你快速構(gòu)建出美觀實(shí)用的登陸頁面,這篇文章主要介紹了利用Vue3+ElementUI樹形菜單實(shí)現(xiàn)層次化用戶界面的相關(guān)資料,需要的朋友可以參考下2026-04-04
vue3使用keep?alive實(shí)現(xiàn)前進(jìn)更新后退銷毀
這篇文章主要為大家介紹了vue3中使用keep?alive實(shí)現(xiàn)前進(jìn)更新后退銷毀示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
vue3+vite項(xiàng)目運(yùn)行后實(shí)現(xiàn)自動(dòng)在瀏覽器打開
文章介紹了如何使用Vue 3和Vite創(chuàng)建項(xiàng)目,并提供了一個(gè)簡(jiǎn)單的步驟指南,包括在package.json文件中進(jìn)行配置,希望這篇經(jīng)驗(yàn)分享對(duì)大家有所幫助,并鼓勵(lì)大家支持腳本之家2026-01-01
Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
富文本編輯器quill.js?開發(fā)之自定義插件示例詳解
這篇文章主要為大家介紹了富文本編輯器quill.js?開發(fā)之自定義插件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

