按需引入 ElMessage,没有样式且类型检查失败

news/2024/5/20 5:35:39 标签: element-plus, 自动导入, ts, 前端, vue.js

在这里插入图片描述

文章目录

    • ElMessage 弹框没有样式
      • 问题描述
      • 解决方案
    • ts 类型检查失败
      • 问题描述
      • 解决办法
    • eslint 检查失败
      • 问题描述
      • 解决办法

ElMessage 弹框没有样式

问题描述

Element-plus 在使用 ElMessage 消息弹框的时候没有样式,按照官方的按需加载的方式引入的

import { ElMessage } from "element-plus";

ElMessage.success('修改成功!')

解决方案

只要是按需导入了,就不要去手动导入。要不然样式无法生效。

  • 当然如果手动导入了模块,再去全局导入所有 element-plus 样式,这也能生效。但这已经不是按需导入了
// 去掉引用
// import { ElMessage } from 'element-plus'

ElMessage.success('修改成功!')

ts__28">ts 类型检查失败

问题描述

如果不手动 import 导入,会发现 ElMessage 会类型检查失败。会报找不到名称ElMessage这样的一个错误 :
image.png
image.png

虽然开发环境可以忍着红线不去管它,可以正常使用,但打包构建会失败。因为构建时会有严格的类型检查 vue-tsc。因此这个问题必须解决。

image.png

解决办法

其实自动导入已经有了 ts 的类型声明,它就在 auto-imports.d.ts 文件里。但为什么编辑器检测不到类型呢。
因为 tsconfig.json 中 include 包含的类型文件范围中没有 auto-imports.d.ts文件。vite 的 vue 模板中,默认包含的类型文件范围是仅在 src 目录下:

  • "include": ["src/**/*.d.ts", ...]

因此将auto-imports.d.ts包含到 ts 类型的检测范围就可以了,。

"include": ["*.d.ts", "src/**/*.d.ts", ...],

eslint 检查失败

问题描述

现在 ts 已经不抱类型错误,但如果配置了 eslint,则 eslint 就会开始报错了。

可以看到 vscode 可以给出 ElNotification 的类型提示,说明 ts 已经识别,但 eslint 仍然检查失败。

image.png

解决办法

方法就要要告诉 eslint ,这些 API 是全局方法。

按需导入的插件 AutoImport,它支持自动声明导入的 ElMessage 等方法为全局变量。

AutoImport({
  // Generate corresponding .eslintrc-auto-import.json file.
  // eslint globals Docs - https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals
  eslintrc: {
    enabled: false, // Default `false`
    filepath: "./.eslintrc-auto-import.json", // Default `./.eslintrc-auto-import.json`
    globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
  }
}),

开启自动导出:

AutoImport({
    resolvers: [ElementPlusResolver({ importStyle: "sass" })],
  	eslintrc: {
      enabled: true // 开启生成 eslint 的全局变量文件
    }
}),

配置开启后,默认就会在 vite 文件同级目录中自动生成对应的.eslintrc-auto-import.json配置文件

{
  "globals": {
    "ElMessage": true,
    "ElNotification": true
  }
}

然后在 eslint 配置文件中继承该全局变量的配置即可:

extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:vue/vue3-essential",
    "plugin:prettier/recommended",
    "./.eslintrc-auto-import.json"
],

如果嫌弃生成的配置文件太多,也可以在 eslint 配置文件中手动声明 eslint 下的全局变量,这样也不用该 vite 配置文件:

extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:vue/vue3-essential",
    "plugin:prettier/recommended",
    // "./.eslintrc-auto-import.json"
],
globals: {
    // 全局变量
    ElMessage: "readonly",
    ElNotification: "readonly"
},

  • https://juejin.cn/post/7069382410143531038
  • https://juejin.cn/post/7247428110163984421

http://www.niftyadmin.cn/n/5215473.html

相关文章

《微信小程序开发从入门到实战》学习二十八

3.4 开发参与投票页面 3.4.3 使用radio单项选择器组件 逻辑层的数据已经准备好,现在实现视图层的页面展示。 投票的标题、,描述、截止日期、是否匿名等信息通过view和text组件就可以展示。比较特别的是投票选项的展示,涉及到单选还是多选&…

C++标准模板(STL)- 类型支持 (类型修改,移除给定类型的一层指针,std::remove_pointer)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例化…

wangEditor 富文本编辑

参考&#xff1a; wangEditor 官方文档 安装 wangEditor npm install wangeditor/editor wangeditor/editor-for-vuenext wangEditor 组件封装 <!-- src/components/WangEditor/index.vue --> <template><div style"border: 1px solid #ccc">…

阻塞队列介绍(一)

1 基础概念 1.1 生产者消费者概念 生产者消费者是设计模式的一种。让生产者和消费者基于一个容器来解决强耦合问题。 生产者 消费者彼此之间不会直接通讯的&#xff0c;而是通过一个容器&#xff08;队列&#xff09;进行通讯。 所以生产者生产完数据后扔到容器中&#xff0c…

MYSQL基础知识之【修改数据,删除数据】

文章目录 前言MySQL UPDATE 查询使用PHP脚本更新数据 MySQL DELETE 语句从命令行中删除数据使用 PHP 脚本删除数据 后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术…

毅速丨3D打印随形水路为何受到模具制造追捧

在模具制造行业中&#xff0c;随形水路镶件正逐渐成为一种革命性的技术&#xff0c;其提高冷却效率、优化产品设计、降低成本等优点&#xff0c;为模具制造带来了巨大的创新价值。 随形水路是一种根据产品形状定制的冷却水路&#xff0c;其镶件可以均匀地分布在模具的表面或内部…

算法竞赛备赛进阶之状态压缩训练

状态压缩 状态压缩DP是一种暴力的算法&#xff0c;它需要遍历每个状态&#xff0c;而每个状态是多个事件的集合。这种算法通常用于小规模问题的求解&#xff0c;因为它的复杂度是指数级别的。 状态压缩DP的两个基本特征包括问题的数据规模特别小&#xff0c;可以通过2的阶乘次…

深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧,GPU是一种专门用于处理大量并行操作的硬件设备,它的架构设计主要是为了图形渲染。然而,由于其并行处理能力,现在广泛应用于深度学习、科学计算等领域。主要的GPU制造商…