• Vue3使用dataV报错问题解决


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

    vue2中是没有问题的,这是第一次在vue3中使用发现的报错问题

    报错问题 

    首先安装:

    pnpm add @dataview/datav-vue3

    1. 全局注册报错  

    然后main.ts全局注册 

    1. import { createApp } from 'vue'
    2. import App from './App.vue'
    3. import router from './router'
    4. import dataV from '@dataview/datav-vue3'
    5. const app = createApp(App)
    6. app.use(router)
    7. .use(dataV)
    8. app.mount('#app')

    然后我们pnpm dev启动的时候直接报错,并且发现dataV下面有波浪线报错 

    2. 按需引入报错 

    1. <script setup lang='ts'>
    2. import { BorderBox1 } from '@dataview/datav-vue3'
    3. script>
    4. <style scoped>

    发现还是同样的报错

     

    解决:

    后来发现该库中的package.json中给的出口有问题

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

    1. "module": "./es/index.js",
    2. 修改为
    3. "module": "./es/index.mjs",// 修改后的

    如果要全局注册的话还需要在node_modules/@dataview/datav-vue3/es/index.mjs添加:

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

    或者

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

    上述修改完之后就可以正常引入使用了,但我们修改的是node_modules中的源码,如果下次再安装npm install安装依赖的时候还是会有同样的问题,所以我们要在package.json中scripts中添加脚本,即执行完npm install之后再自动执行一个脚本将node_modules中的源码替换掉,这需要我们提前将修改好的文件放在项目目录中,如下: 

     

    新建lib文件夹,将修改好的文件放在其中

    然后在package.json中scripts中添加

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

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

     install-datav-patch.js

    1. const path = require('path')
    2. const fs = require('fs')
    3. const libPackagePath = path.join(__dirname, 'lib/dataview/datav-vue3/package.json')
    4. const libIndexPath = path.join(__dirname, 'lib/dataview/datav-vue3/es/index.mjs')
    5. const modulesPackagePath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/package.json')
    6. const modulesIndexPath = path.join(__dirname, 'node_modules/@dataview/datav-vue3/es/index.mjs')
    7. fs.writeFileSync(modulesPackagePath, fs.readFileSync(libPackagePath))
    8. fs.writeFileSync(modulesIndexPath, fs.readFileSync(libIndexPath))

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

  • 相关阅读:
    基于NSGAII多目标遗传优化的WSN无线传感器网络最优覆盖率matlab仿真
    【Nginx38】Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析
    Python的PyQt框架的使用-构建环境篇
    技术分享 | 接口测试价值与体系
    ssm基于web的酒店预订及个性化服务系统 毕业设计源码241822
    Linux 启动流程及相关知识
    JVM参数调优推荐
    数据结构day2
    猿创征文|【Typescript入门】常用数据类型(1)
    【电商运营】你真的了解社交媒体营销(SMM)吗?
  • 原文地址:https://blog.csdn.net/m0_51431448/article/details/134550221