首页 > 其他分享 >解决模块 ""element-plus"" 没有导出的成员 "ElMessage"。你是想改用 "import ElMessage

解决模块 ""element-plus"" 没有导出的成员 "ElMessage"。你是想改用 "import ElMessage

时间:2023-06-02 14:22:40浏览次数:64  
标签:node element json plus ElMessage tsconfig

一、问题介绍

在使用vite+element-plus+ts搭建项目时,导入ElMessage组件遇到【模块 ""element-plus"" 没有导出的成员 "ElMessage"。你是想改用 "import ElMessage from "element-plus"" 吗?】这一错误提示

二、出现原因

ts识别不到element-plus对外暴露的ElMessage这一类型

三、解决思路

在根目录env.d.ts这个文件中添加如下声明类型代码:

1.在env.d.ts中添加如下代码:

import { ElMessage } from "element-plus"
// 手动声明 ElMessage
declare module 'element-plus' {
  export class ElMessage {
    static success(message: string): void;
    static warning(message: string): void;
    static info(message: string): void;
    static error(message: string): void;
  }
}

2.修改tsconfig.app.json和tsconfig.node.json文件

分别在tsconfig.app.json和tsconfig.node.json中新增一行"moduleResolution": "node",

// tsconfig.app.json
{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
  "exclude": ["src/**/__tests__/*"],
  "compilerOptions": {
    "moduleResolution": "node",
    "composite": true,
    "baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录
    "paths": { //路径映射,相对于baseUrl
      "@/*": ["src/*"] 
    }
  }
}
// tsconfig.node.json
{
  "extends": "@tsconfig/node18/tsconfig.json",
  "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"],
  "compilerOptions": {
    "moduleResolution": "node",
    "composite": true,
    "module": "ESNext",
    "types": ["node", "element-plus/global"]
  }
}

在 TypeScript 中,moduleResolution 配置选项用于指定模块解析策略,即指定 TypeScript 编译器如何解析模块导入的路径。

至此,问题解决!

四、总结

1、问题复现: 使用npm create @vue3命令构建一个Vue3+Ts项目,安装Element Plus,在App.vue页面的script里导入ElMessage就能复现这个问题

2、错误提示不影响本地启动以及使用,只是导入的地方有波浪线提示

3、可在单个页面上通过手动声明解决该问题;在声明文件中使用则会和全局导入冲突,因为声明的类型不全,所以存在错误提示

4、moduleResolution设置为Node即可解决

标签:node,element,json,plus,ElMessage,tsconfig
From: https://www.cnblogs.com/jscook/p/17451651.html

相关文章

  • SpringBoot Vue3 Element Plus 打造分布式存储系统
    SpringBoot+Vue3+ElementPlus打造分布式存储系统download:3w51xuebccom配置IDEA热部署-devtools开发过程中频繁修改代码,每次都需要重新编译,部署,重启服务器,这无疑极大浪费了我们的时间。解决这个问题的方法就是使用热部署技术。本篇文章将介绍如何在IDEA中使用devtools实现热部署......
  • 黑马Vue3 + ElementPlus + Pinia 小兔鲜电商项目2023版
    黑马Vue3+ElementPlus+Pinia小兔鲜电商项目2023版download:3w51xuebccom合式API-watch-基本使用和立即执行合式API是一个用于构建可靠、模块化、灵活的RESTfulAPI的框架。它提供了许多实用的功能,其中包括watch机制。在本篇文章中,我们将介绍合式API的watch机制的基本使用和立......
  • element ui 预览图片的时候滚动鼠标放大缩小, 重新打开的时候恢复原来大小
    <template><div><el-button@click="openPreview">预览图片</el-button><el-dialog:visible.sync="dialogVisible":close-on-click-modal="false":before-close="resetPreview"><im......
  • Element-ui中 选择器(select)多选下拉框实现全选功能
    Element-ui中选择器(select)多选下拉框实现全选功能需求(产品整活):需要下拉时候可以一键全选父组件运用<template><div><MultipleSelect:filterable="false":selectOptions="selectOptions"//数据集合:mulSelectLoading="mulSelectLoad......
  • vue3 ts elementplus行头加el-tooltip
    <!--vue3tselementplus行头加el-tooltip--><el-table-columnalign="left"><template#header><el-tooltipclass="box-item"effect="dark"con......
  • vue+element项目中统一处理接口异常,只提示一次异常信息
     有时候一个页面会同时调多个接口,但是多个接口异常,需要做提示,那么提示的时候会弹出很多的提示信息,这无疑让体验感降低很多。 所以针对这种情况,我们配合elementUI统一做一个异常状态的处理,只能显示一次提示的功能,后续代码调接口的时候也可以省略去写异常状态下的逻辑了。首先......
  • mybatis-plus 批量插入/新增
    建表SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforrewrite_sql------------------------------DROPTABLEIFEXISTS`rewrite_sql`;CREATETABLE`rewrite_sql`(`id`intNOTNULLDEFAULT-1,`stu_......
  • 解决mybatis-plus查询字段中含有关键词时异常问题
    在使用mybatis-plus查询mysql某张表的数据时,一直告警提示sqlsyntaxerror。于是,把异常提示里的sql语句复制到navicat执行,也提示sqlsyntaxerror。仔细看了下,发有几个字段在navigate里面标示为蓝色(这几个字段为sensitive、status、name),这几个字段在mysql里面是关键词。在查询语......
  • Mybatis Plus
    MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率1.MyBatisPlus简介入门案例MyBatisPlus概述2.标准数据层开发标准数据层CRUD功能分页功能3.DQL控制条件查询方式查询投影查询条件设定字段映射与表名映射4.DML控制id自增......
  • 使用OnePlus 6T(一加6T)刷入 Kali NetHunter的操作总结
    前景概述:看到网上有人用手机进行BadUSB攻击,自己也幻想了一下在手机中使用KaliLinux的场景,看到Kali官方提供的有移动端的设备Nethunter,于是我就筹划这准备刷入这个系统。想要刷入NetHunter,并不是非常简单的事情,但是如果你有刷机基础的话,也可以是很简单的步骤。我是一个小白,一......