ruoyi-nbcio-plus的Vue3前端升级组件后出现的问题(一)

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址: http://122.227.135.243:9666

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888

1、运行出现下面警告

出现警告 The CJS build of Vite's Node API is deprecated.

解决办法可以在

package.json 添加 "type": "module"

2、出现下面的错误

ReferenceError: defineOptions is not defined

好像不支持defineOptions

vue3 defineOptions使用,需要注意

项目推荐依赖:

javascript 复制代码
vue@^3.3
volar / vue-tsc@^1.6.4
vite@^4.3.5
@vitejs/plugin-vue@^4.2.0
vue-loader@^17.1.0 (if using webpack or vue-cli)

所以有些组件需要进行升级

3、出现下面错误

No known conditions for "./lib/locale/lang/zh-cn" specifier in "element-plus" package

import locale from 'element-plus/lib/locale/lang/zh-cn'; // 中文语言

上面修改成如下:

import locale from 'element-plus/es/locale/lang/zh-cn'; // 中文语言

4、主页显示charts图的时候出现下面错误

javascript 复制代码
Vue warn]: Failed to resolve component: BarChart
If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement. 
  at <Dashboard onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > key="/index" > 
  at <KeepAlive include= [] > 
  at <BaseTransition mode="out-in" appear=false persisted=false  ... > 
  at <Transition enter-active-class="animate__animated animate__fadeIn" mode="out-in" > 
  at <RouterView> 
  at <AppMain> 
  at <Index onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< null > > 
  at <RouterView> 
  at <ElConfigProvider locale= {name: 'zh-cn', el: {...}}el: {colorpicker: {...}, datepicker: {...}, select: {...}, cascader: {...}, pagination: {...}, ...}name: "zh-cn"[[Prototype]]: Object size="default" > 
  at <App>

变成显示如下了:

5、需要在vite.config.ts引入下面包,因为是用unplugin-vue-components 是由 Vue官方人员开发的一款自动引入插件,可以省去比如 UI 库的大量 import 语句

javascript 复制代码
import vue from "@vitejs/plugin-vue";
import { UserConfig, ConfigEnv, loadEnv, defineConfig } from "vite";

import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";

import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";

import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import vueJsx from "@vitejs/plugin-vue-jsx";

import UnoCSS from "unocss/vite";
import { resolve } from "path";
const pathSrc = resolve(__dirname, "src");
javascript 复制代码
plugins: [
      vue(),
      // MOCK 服务,开启 MOCK 放开注释即可
      // mockDevServerPlugin(),
      vueJsx(),
      UnoCSS({
        hmrTopLevelAwait: false,
      }),
      // 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts
      AutoImport({
        // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
        imports: ["vue", "@vueuse/core", "pinia", "vue-router", "vue-i18n"],
        // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式)
        resolvers: [ElementPlusResolver(), IconsResolver({})],
        eslintrc: {
          enabled: false,
          filepath: "./.eslintrc-auto-import.json",
          globalsPropValue: true,
        },
        vueTemplate: true,
        // 配置文件生成位置(false:关闭自动生成)
        dts: false,
        // dts: "src/typings/auto-imports.d.ts",
      }),

      Components({
        resolvers: [
          // 自动导入 Element Plus 组件
          ElementPlusResolver(),
          // 自动注册图标组件
          IconsResolver({ enabledCollections: ["ep"] }),
        ],
        // 指定自定义组件位置(默认:src/components)
        dirs: ["src/components", "src/**/components"],
        // 配置文件位置 (false:关闭自动生成)
        dts: false,
        // dts: "src/typings/components.d.ts",
      }),

      Icons({
        autoInstall: true,
      }),
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [resolve(pathSrc, "assets/icons")],
        // 指定symbolId格式
        symbolId: "icon-[dir]-[name]",
      }),
    ],

6、重新运行后出现下面界面了

相关推荐
凯心几秒前
React 中没有 v-model,如何优雅地处理表单输入
前端·vue.js·react.js
南雨北斗几秒前
vue3 Composable介绍
前端
x***B4117 分钟前
TypeScript项目引用
前端·javascript·typescript
●VON44 分钟前
使用 Electron 构建天气桌面小工具:调用公开 API 实现跨平台实时天气查询V1.0.0
前端·javascript·electron·openharmony
码上成长1 小时前
包管理提速:pnpm + Workspace + Changesets 搭建版本体系
前端·前端框架
Bigger1 小时前
Tauri(十九)——实现 macOS 划词监控的完整实践
前端·rust·app
ganshenml2 小时前
【Web】证书(SSL/TLS)与域名之间的关系:完整、通俗、可落地的讲解
前端·网络协议·ssl
这是个栗子2 小时前
npm报错 : 无法加载文件 npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
HIT_Weston3 小时前
44、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 分析(一)
前端·ubuntu·gitlab
华仔啊3 小时前
Vue3 如何实现图片懒加载?其实一个 Intersection Observer 就搞定了
前端·vue.js