Vue3使用dataV報錯問題解決

DataV官網:https://datav-vue3.jiaminghi.com/guide/

vue2中是沒有問題的,這是第一次在vue3中使用發現的報錯問題

報錯問題?

首先安裝:

pnpm add @dataview/datav-vue3

1. 全局注冊報錯??

然后main.ts全局注冊?

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import dataV from '@dataview/datav-vue3'const app = createApp(App)app.use(router).use(dataV)
app.mount('#app')

然后我們pnpm dev啟動的時候直接報錯,并且發現dataV下面有波浪線報錯?

2. 按需引入報錯?

<template><div class="index"><div class="charts-content"><BorderBox1>Content</BorderBox1></div></div>
</template>
<script setup lang='ts'>
import { BorderBox1 } from '@dataview/datav-vue3'
</script>
<style scoped>

發現還是同樣的報錯

解決:

后來發現該庫中的package.json中給的出口有問題

找到node_modules/@dataview/datav-vue3/package.json

"module": "./es/index.js",
修改為
"module": "./es/index.mjs",// 修改后的

如果要全局注冊的話還需要在node_modules/@dataview/datav-vue3/es/index.mjs添加:

//D, E, G, I, K, g, C, P, h, k, u, w, z, N, Q, S, U, W, Y, _, oo, eo分別是BorderBox1...等組件
export default function(app) {const components = [D, E, G, I, K, g, C, P, h, k, u, w, z, N, Q, S, U, W, Y, _, oo, eo]components.forEach(component => {app.component(component.name, component);})
}

或者

export default {install(app) {const components = [D, E, G, I, K, g, C, P, h, k, u, w, z, N, Q, S, U, W, Y, _, oo, eo]components.forEach(component => {app.component(component.name, component);})}
}

上述修改完之后就可以正常引入使用了,但我們修改的是node_modules中的源碼,如果下次再安裝npm install安裝依賴的時候還是會有同樣的問題,所以我們要在package.json中scripts中添加腳本,即執行完npm install之后再自動執行一個腳本將node_modules中的源碼替換掉,這需要我們提前將修改好的文件放在項目目錄中,如下:?

新建lib文件夾,將修改好的文件放在其中

然后在package.json中scripts中添加

"scripts": {"postinstall": "node install-datav-patch.js"
}

然后在根目錄下新建install-datav-patch.js文件:

?install-datav-patch.js

const path = require('path')
const fs = require('fs')const libPackagePath = path.join(__dirname, 'lib/dataview/datav-vue3/package.json')
const libIndexPath = path.join(__dirname, 'lib/dataview/datav-vue3/es/index.mjs')
const modulesPackagePath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/package.json')
const modulesIndexPath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/es/index.mjs')fs.writeFileSync(modulesPackagePath, fs.readFileSync(libPackagePath))
fs.writeFileSync(modulesIndexPath, fs.readFileSync(libIndexPath))

最后再重新執行npm install或者pnpm install方法即可?

報錯補充:

首先上面按照上面步驟修改之后,確實是可以正常展示了,但是又發現個新問題,就是當我們在使用了上面其中的組件的頁面進行頁面跳轉時,會發現跳轉不了,控制臺報錯如下:?

?

然后又去看了下源碼,發現在node_modules/@dataview/datav-vue3/es/components里面每個組件里面都有段邏輯一樣的代碼如下:

?

這是個函數,然后我們去打印了一下$el,在進入頁面正常加載時正常打印就是當前組件實例,但是當跳轉頁面時,也就是離開頁面是,這塊兒$el會打印個null,直接導致不能跳轉,所以我們在這兒加個try catch就行了,這就要我們在每個組件里面都要修改一下:

?

全都換成這種寫法,然后我們要把改好的components這個文件夾也拷貝到上面創建的lib里面,那么install-datav-patch.js這個腳本邏輯也要修改一下,如下:?

const path = require('path')
const fs = require('fs')const libPackagePath = path.join(__dirname, 'lib/dataview/datav-vue3/package.json')
const libIndexPath = path.join(__dirname, 'lib/dataview/datav-vue3/es/index.mjs')
const libComponentsPath = path.join(__dirname, 'lib/dataview/datav-vue3/es/components')const modulesPackagePath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/package.json')
const modulesIndexPath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/es/index.mjs')
const modulesComponentsPath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/es/components')fs.writeFileSync(modulesPackagePath, fs.readFileSync(libPackagePath));
fs.writeFileSync(modulesIndexPath, fs.readFileSync(libIndexPath));fs.rmdirSync(modulesComponentsPath, { recursive: true, force: true });const dirs = [{absolutePath: libComponentsPath,realtivePath: ''
}]for(let dir of dirs) {fs.mkdirSync(path.join(modulesComponentsPath, dir.realtivePath))const names = fs.readdirSync(dir.absolutePath)for(let name of names) {const stat = fs.statSync(path.join(dir.absolutePath, name))if(stat.isDirectory()) {dirs.push({absolutePath: path.join(dir.absolutePath, name),realtivePath: path.join(dir.realtivePath, name)})} else if(stat.isFile()) {fs.writeFileSync(path.join(modulesComponentsPath, dir.realtivePath, name), fs.readFileSync(path.join(dir.absolutePath, name)))}}
}

這就是完整的了,這樣就可以正常使用其中的組件了,其實也就用了邊框~?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html網站-關于發展歷程的案例

一、案例一 1.效果圖&#xff1a; 2.代碼&#xff1a; 所用到的文件自行在官網下載&#xff0c;也可在git上拉取。 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta…

USB驅動開發基礎

USB標準 USB1.0&#xff0c; 1996&#xff0c;低速1.5Mbps和高速12Mbps&#xff0c;USB1.1 iMac G3&#xff0c;Type A和Type B接口USB 2.0 2000&#xff0c; 480Mpbs&#xff0c;Type A/B/C接口、Micro A/BUSB 3.0 5Gbps, 隨著USB 3.2命名規定&#xff0c;現在也叫USB 3.2 Ge…

Nginx模塊開發之http過濾器filter

文章目錄 什么是過濾模塊Nginx相關數據結構介紹ngx_module_t的數據結構ngx_http_module_t數據結構ngx_command_s數據結構 相關宏定義filter&#xff08;過濾器&#xff09;實現Nginx模塊開發流程Nginx 模塊執行具體實現流程create_loc_confmerge_loc_confpostconfiguration修改…

使用OkHttp庫爬取百度云視頻詳細步驟

目錄 摘要 一、OkHttp庫簡介 二、爬蟲基本概念 三、使用OkHttp庫爬取百度云視頻 1、發送HTTP請求 2、處理響應 3、下載文件 四、可能遇到的問題及解決方案 五、注意事項 總結與建議 摘要 本文將詳細介紹如何使用OkHttp庫爬取百度云視頻。文章首先簡要介紹OkHttp庫和…

【collections】Python中的OrderDict

【collections】Python中的OrderDict 文章目錄 【collections】Python中的OrderDict1. 什么是OrderedDict2. Toy Code 1. 什么是OrderedDict 其實很簡單OrderedDict是Python中一個字典dict的變體&#xff0c;它可以按照元素添加的順序來保持鍵值對&#xff08;key-value pair&…

GPIO模式詳解:推挽/開漏/浮空/上拉/下拉/施密特(遲滯)輸入

GPIO(General Purpose Input Output)可用于執行數字輸入或輸出功能。典型的應用包括從/向模擬或數字傳感器/設備讀寫數值、驅動LED、為I2C通信驅動時鐘、生成外部組件的觸發、發出中斷等。 文章目錄 1 GPIO簡介2 輸出模式2.1 推挽輸出2.2 開漏輸出 3 輸入模式3.1 高阻態(浮空)、…

推薦一款適合做智慧旅游的前端模板

目錄 前言 一、功能介紹 二、前端技術介紹 三、功能及界面設計介紹 1、數據概覽 2、車輛監控 3、地圖界面 4、其它功能 四、擴展說明 總結 前言 智慧旅游是一種全新的旅游業務模式&#xff0c;它充分利用先進的信息技術&#xff0c;提升旅游體驗&#xff0c;優化旅游管…

【Axure高保真原型】樹形表格

今天和大家分享樹形表格的原型模板&#xff0c;點擊樹的箭頭可以打開或者收起子節點&#xff0c;點擊表格內容&#xff0c;可以選中該行內容實現高亮變色效果&#xff0c;樹形表格是通過中繼器制作的&#xff0c;使用簡單&#xff0c;只需要按要求填寫中繼器表格即可&#xff0…

2023亞太杯數學建模思路 - 案例:粒子群算法

文章目錄 1 什么是粒子群算法&#xff1f;2 舉個例子3 還是一個例子算法流程算法實現建模資料 # 0 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

安防監控視頻融合平臺EasyCVR定制化頁面開發

安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同&#xff0c;支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。安防視頻平臺EasyCVR拓展性強&#xff0c;視頻能力豐富&#xff0c;具體可實現視頻監控直播、視頻輪播、視頻錄像、云存儲、回放與檢索…

ConditionObject介紹(二)

1. Condition的signal方法分析 分為了幾個部分&#xff1a; ● 確保執行signal方法的是持有鎖的線程 ● 脫離Condition的隊列 ● 將Node狀態從-2改為0 ● 將Node添加到AQS隊列 ● 為了避免當前Node無法在AQS隊列正常喚醒做了一些判斷和操作 // 線程掛起后&#xff0c;可以基于…

Centos設置nginx開機自啟動設置

Centos設置nginx開機自啟動設置 要設置CentOS中的Nginx開機自啟動&#xff0c;可以按照以下步驟進行操作&#xff1a; 首先&#xff0c;登錄到CentOS服務器上&#xff0c;并以root用戶或具有sudo權限的用戶身份執行以下命令來安裝Nginx&#xff08;如果尚未安裝&#xff09;&a…

字符集合!!!

字符集合&#xff01;&#xff01;&#xff01; 描述 輸入一個字符串&#xff0c;求出該字符串包含的字符集合&#xff0c;按照字母輸入的順序輸出。 數據范圍&#xff1a;輸入的字符串長度滿足 1 \le n \le 100 \1≤n≤100 &#xff0c;且只包含大小寫字母&#xff0c;區分大小…

中國信息通信研究院產業與規劃研究所校招一面、二面內容

本文介紹2024屆秋招中&#xff0c;中國信息通信研究院的數字孿生智慧城市研究員崗位一面、二面的面試基本情況、提問問題等。 10月投遞了中國信息通信研究院的數字孿生智慧城市研究員崗位&#xff0c;所在部門為數字孿生與城市數字化研究部。目前完成了一面與二面&#xff0c;在…

Django 模型和Admin站點管理(三)

一、定義模型 &#xff08;1&#xff09; 創建模型類&#xff0c;必須要繼承自 models.Model from django.db import models# Create your models here. #設計數據庫 #創建模型 class UserModel(models.Model):namemodels.CharField(max_length30) #對應于SQL name varchar(30…

K8s實戰RestartPoliy策略

一、默認策略為Always cmd.yaml apiVersion: v1 kind: Pod metadata:name: myapp-pod labels:app: myapp spec: containers:- name: myapp-container image: busyboxcommand: [sh, -c, echo OK!&& sleep 60]首先我們根據這個yaml創建一個測試的pod 執行命令 kubec…

Vue.observable可以在vue2中給新增的屬性增加響應式

將data中的config數據轉為響應式&#xff1a; data() {return {config: {password1: "YQd^7D1",password2: "YQd^7D2",password3: "YQd^7D3"}}; }, computed: {transformedConfig() {if (this.config) {return Object.keys(this.config).map(k…

C++二維數組中的查找

4. 二維數組中的查找 題目鏈接 牛客網 題目描述 給定一個二維數組,其每一行從左到右遞增排序,從上到下也是遞增排序。給定一個數,判斷這個數是否在該二維數組中。 Consider the following matrix: [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[1…

深度之眼Paper帶讀筆記GNN.08.GCN(下)

文章目錄 前言細節四&#xff1a;卷積核介紹圖卷積核初代目圖卷積核二代目契比雪夫多項式例子小結 GCN公式推導 實驗設置和結果分析數據集節點分類任務消息傳遞方式比較運行效率 總結關鍵點創新點啟發點 代碼復現train.pyutil.pymodel.pylayer.py 作業 前言 本課程來自深度之眼…

基于單片機直流電機調速(proteus仿真+源程序)

一、系統方案 1、本設計采用這51單片機作為主控器。 2、轉速值送到液晶1602顯示。 3、按鍵設加減速&#xff0c;開始暫停、正反轉。 二、硬件設計 原理圖如下&#xff1a; 三、單片機軟件設計 1、首先是系統初始化 en0; rw0; write_com(0x01); //lcd初始化 write_com(0x38)…