Vite创建的Vue3项目按需导入(自动导入) Element Plus 样式错误以及编译器报错的问题

文章目录

  • 前言
  • 配置 Element Plus 自动导入
  • 解决 ElMessage, ElNotification 等组件样式不正确的问题
  • 解决 ElMessage, ElNotification 等组件编译器报错的问题


前言

在Vite构建的Vue3项目中,可以通过官方推荐的自动导入的方法,方便地使用Element Plus,这样不需要在每一个Vue中手动import,而且基于按需导入的自动导入打包时效率也会更高。但是,不当的使用可能会导致ElMessage,ElNotification 等组件的样式丢失,不经过很好的配置,可能会出现虽然正确使用,但编译器报错的问题。这篇文章主要讲解如何正确引入Element Plus,以及解决上述两个常见的问题。


配置 Element Plus 自动导入

安装 Element Plus,参考官方文档

# 选择一个你喜欢的包管理器

# NPM
$ npm install element-plus --save

# Yarn
$ yarn add element-plus

# pnpm
$ pnpm install element-plus

这里参考element-plus官方文档的自动导入方式

首先需要安装 unplugin-vue-componentsunplugin-auto-import 这两款插件

npm install -D unplugin-vue-components unplugin-auto-import

然后把下列代码插入到你的 Vite 的配置文件中 (以下代码片段摘自官方文档)

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

下面时我创建的项目中的对 vite.config.ts 的修改,供参考

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// element-ui的相关配置1/2
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    // element-ui的相关配置2/2
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

解决 ElMessage, ElNotification 等组件样式不正确的问题

配置好自动导入后,ts 中使用 ElMessage, ElNotification 不需要再使用 import { ElNotification, ElNotification } from 'element-plus' ,否则会出现样式丢失的问题,直接使用即可

// 配置好自动导入后,不需要再导入
// import { ElNotification } from 'element-plus'

// 直接使用即可
const open1 = () => {
  ElNotification({
    title: 'Success',
    message: 'This is a success message',
    type: 'success',
  })
}

可以发现,这样就可以正常显示组件了,运行也不会有报错,但是,编译器中的语法检查会报错,下文将解决这个问题

解决 ElMessage, ElNotification 等组件编译器报错的问题

当完成上述配置后,可以发现,在 view 中可以直接使用 <el-button> 等内容,而无需在 ts 脚本中引入,但是,当使用 ElNotification 等需要在 ts 代码中调用的组件时,编译器会报找不到引用的错误,如下图
在这里插入图片描述
但是编译运行时会发现没有错误,说明 ElNotification 已经被成功导入了,只是没有通过语法检查

如果仔细观察会发现,在我们安装 unplugin-vue-componentsunplugin-auto-import 这两款插件时,已经在项目根目录生成了相关的配置文件 auto-imports.d.tscomponents.d.ts,我们需要将这两个配置文件引入来解决这个问题

tsconfig.jsoninclude 列表中,加入 unplugin-vue-componentsunplugin-auto-import 两项:

// tsconfig.json
{
  ...
  "include": [..., "auto-imports.d.ts", "components.d.ts"],
  ...
}

在我创建的项目中,tsconfig.json 引用了两个文件,那么将配置加入tsconfig.app.json中,供参考

// tsconfig.json
{
  "files": [],
  "references": [
    {
      "path": "./tsconfig.node.json"
    },
    {
      "path": "./tsconfig.app.json"
    }
  ]
}
// tsconfig.app.json
{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "auto-imports.d.ts", "components.d.ts"],
  "exclude": ["src/**/__tests__/*"],
  "compilerOptions": {
    "composite": true,
    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",

    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

在这里插入图片描述
此时编译器就不报错了,问题完美解决,如果依然报错,可以尝试重启编译器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/413718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖 -- day10- Spring Task- 订单状态定时处理- WebSocket- 来单提醒- 客户催单

苍穹外卖-day10 功能实现&#xff1a;订单状态定时处理、来单提醒和客户催单 订单状态定时处理&#xff1a; 来单提醒&#xff1a; 客户催单&#xff1a; 1. Spring Task 1.1 介绍 Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代…

elementUI 弹窗居中 并且tabs组件 tab-position=“left“时显示的样式优化

需求 项目需要自定义字段&#xff0c;但是有个样式不太好实现&#xff0c;记录一下。 最初效果 优化后效果 <template><el-dialog title"新建字段" :visible.sync"visible" width"50%" :before-close"handleClose"><…

策略模式:封装行为策略,灵活切换实现多态业务逻辑

文章目录 一、引言二、应用场景三、模式定义与实现四、优缺点分析总结 一、引言 ​ 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了算法族&#xff0c;并分别封装起来&#xff0c;让它们之间可以互相替换。这种模式使得算法的变化…

Linux中数据库sqlite3的基本命令的使用

数据库概念介绍 数据库安装 首先将本地的三个sqlite3安装包移动到共享文件夹然后在移动到自己创建的文件夹中如下&#xff1a; 然后对安装包进行解压如下&#xff1a;sudo dpkg -i *.deb检查是否安装成功sqlite数据库命令 系统命令 &#xff0c; 都以’.开头 .exit .quit .…

My个人网页。

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>花花的个人网页</title> <style>bod…

Github 2024-02-25开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-25统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目5Jupyter Notebook项目2TypeScript项目2非开发语言项目1HTML项目1C项目1Dart项目1 Python - 100天…

【OnlyOffice】 桌面应用编辑器,版本8.0已发布,PDF表单、RTL支持、Moodle集成、本地界面主题

ONLYOFFICE桌面编辑器v8.0是一款功能强大、易于使用的办公软件&#xff0c;适用于个人用户、企业团队和教育机构&#xff0c;帮助他们高效地处理文档工作并实现协作。无论是在Windows、macOS还是Linux平台上&#xff0c;ONLYOFFICE都能提供无缝的编辑和共享体验。 目录 ONLYOFF…

Stable Diffusion 模型分享:【Checkpoint】YesMix(动漫、2.5D)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四下载地址模型介绍 条目内容类型大模型基础模型SD 1.5来源

完全分布式运行模式

完全分布式运行模式 分析&#xff1a;之前已经配置完成 ​ 1&#xff09;准备3台客户机&#xff08;关闭防火墙、静态ip、主机名称&#xff09; ​ 2&#xff09;安装JDK ​ 3&#xff09;配置环境变量 ​ 4&#xff09;安装Hadoop ​ 5&#xff09;配置环境变量 ​ 6&am…

Qt开发 入门

Qt开发 入门 Qt Hello World程序 使用"按钮”实现 纯代码方式实现 &#xff08;1&#xff09;创建工程 剩下的直接下一步即可 &#xff08;2&#xff09;编写代码&#xff0c;widget.cpp #include "widget.h" #include "ui_widget.h"#include &…

Sui在AIBC Eurasia奖项评选中被评为2024年度最佳区块链解决方案

自2023年主网上线以来&#xff0c;经历了爆炸性增长的Layer1区块链Sui在2月25–27日迪拜举办的第二届AIBC Eurasia活动中获得“2024最佳区块链解决方案奖”&#xff08;Best Real World Application Award 2024&#xff09;。这个盛大的活动以世界级的参与者和往届获奖者而闻名…

MATLAB中的makeweight函数

W makeweight(dcgain,[freq,mag],hfgain) W makeweight(dcgain,[freq,mag],hfgain,Ts) W makeweight(dcgain,[freq,mag],hfgain,Ts,N) W makeweight(dcgain,wc,hfgain,___) W makeweight(dcgain,wc,hfgain&#xff0c;___)表示增益交叉频率wc。该语法相当于将…

华为大数据平台-FusionInsight MRS

1、产品定位 (1) 关于华为的大数据平台&#xff0c;本人之前用过FusionInsight HD版本&#xff0c;近期也在用MRS结合MPP和治理平台做湖仓一体的开发&#xff0c;其实MRS是在HD基础上进行的升级、改版&#xff0c;MRS是集成一些开源的大数据组件&#xff0c;有自己的运维和安全…

【已解决】用ArcGIS处理过的数据在QGIS中打开发生偏移怎么办?| 数据在ArcGIS中打开位置正常,在QGIS中偏移

1. 问题描述 栅格或者矢量数据用ArcGIS打开时位置正确&#xff08;可以和其他数据对应上&#xff09;。但是用QGIS打开后发现位置不对 2. 问题的原因 因为该数据用了ArcGIS自定义的坐标系&#xff0c;QGIS不支持&#xff0c;识别有误。因此在数据QGIS中的坐标系参数有误&a…

4. client-go 编程式交互

Kubernetes 系统使用 client-go 作为 Go 语言的官方编程式交互客户端库&#xff0c;提供对 Kubernetes API Server 服务的交互访问。Kubernetes 的源码中已经集成了 client-go 的源码&#xff0c;无须单独下载。client-go 源码路径为 vendor/k8s.io/client-go。 开发者经常使用…

Mistral发布语言大模型Mistral Large;法国新星Mistral挑战 OpenAI 霸主地位

&#x1f989; AI新闻 &#x1f680; Mistral发布语言大模型Mistral Large 摘要&#xff1a;Mistral Large 是 Mistral AI 公司最新发布的旗舰语言模型&#xff0c;具备顶尖水平的推理能力。它主要被设计用于处理复杂的多语言推理任务&#xff0c;比如文本理解、转换和代码生…

Flink应用场景

1、介绍 (1) Apache Flink 功能强大&#xff0c;支持开发和运行多种不同种类的应用程序。它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架…

C++:list容器(非原生指针迭代器的实现)

本章是STL容器 list 的模拟实现。 之前已经使用 C语言 对带头双向循环链表 进行实现&#xff0c;详见数据结构: 线性表(带头双向循环链表实现), 相较于之前的实现&#xff0c;C 下多了对迭代器以及模板等相关语法特性。下面将着重讲解这些新知识。 文章目录 一. list 的基本框架…

新火种AI|微软扶持下一个OpenAI?Mistral AI新模型对标GPT-4,上线即挤爆

作者&#xff1a;一号 编辑&#xff1a;美美 OpenAI的大金主微软&#xff0c;还想缔造“下一个OpenAI”。 周一晚间&#xff0c;成立仅9个月的Mistral AI正式发布了最强力的旗舰模型Mistral Large。和此前他们所推出的一系列模型不同&#xff0c;Mistral AI本次发布的版本性…

c语言经典测试题7

1.题1 int main() {int count 0;int x -1;while (x){count;x x >> 1;}printf("%d", count);return 0; } 上述代码的运行结果是什么呢&#xff1f; 我们来分析一下&#xff1a;我们知道在vs中右移操作符的规则是&#xff0c;右边抛弃&#xff0c;左边由符…