当前位置: 首页 > news >正文

Vue3解决“找不到模块“@/components/xxx.vue”或其相应的类型声明”

文章目录

    • 前言
    • 背景
    • 问题描述
    • 解决方案
    • 总结

前言

在使用 Vue 3 开发项目时,遇到“找不到模块 ‘@/components/xxx.vue’ 或其相应的类型声明”的错误是一个常见问题。这通常与 TypeScript 和模块解析相关的配置不当有关。本文将详细介绍如何解决此问题,确保你的项目能够正确识别和导入 Vue 组件。

背景

在 Vue 项目中,@ 符号通常用作别名,指向项目的根目录(一般是 src 目录)。这使得模块导入路径更简洁和直观。然而,当使用 TypeScript 时,除了配置 Webpack 或 Vite 以支持别名外,还需要在 TypeScript 配置文件中同步更新别名设置,否则 TypeScript 编译器无法解析这些路径,导致无法找到模块或其相应的类型声明。

问题描述

先上问题截图。
在这里插入图片描述出现这个问题如何解决。这个项目是通过Vite创建的Vue3项目。编辑器使用的是VS Code。

不仅仅代码显示报错,并且编译也报错。

在这里插入图片描述

解决方案

1、安装依赖(主要用于解决 Node.js 环境相关的类型定义问题)

npm i @types/node -D

2、在 vite.config.ts 文件中配置别名:

defineConfig配置项里面增加下面配置:

   resolve:{alias:{"@":path.resolve(__dirname,'./src')}}

完整的配置如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],resolve:{alias:{"@":path.resolve(__dirname,'./src')}}
})

添加后效果如下:
在这里插入图片描述
3、在 tsconfig.json 文件中配置路径映射:
compilerOptions里面增加以下配置

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

效果图如下:
在这里插入图片描述

4、重启编辑器VS Code
重启后找不到模块这个问题就解决了。完成以上配置后,你可以使用 @ 别名来导入 Vue 组件,而不会遇到模块解析错误。
在这里插入图片描述

总结

通过正确配置 Webpack/Vite 和 TypeScript,确保 @ 别名在项目中正确解析,你可以避免“找不到模块 ‘@/components/xxx.vue’ 或其相应的类型声明”的错误。以上步骤提供了详细的解决方案,帮助你顺利开发 Vue 3 应用。

相关文章:

  • Docker: exec命令浅析
  • Java核心: 脚本引擎和动态编译
  • 三种路由协议RIP,OSPF和BGP
  • Android Graphics 显示系统 - Android 14(U)编译/运行Surface绘图、多屏同显/异显示例
  • 专为汽车内容打造的智能剪辑解决方案
  • 人工智能万卡 GPU 集群的硬件和网络架构
  • Microsoft VBA Excel 去重小工具
  • 解决go install 网络问题
  • 电子电器架构 - AUTOSAR软件架构介绍
  • 设计原则-
  • docker 命令总结
  • 4个宝藏网站,免费即用,办公运营效率利器!
  • Three.js 研究:2、如何让动画线性运动
  • 7.Redis之String编码方式应用场景业务
  • [书生·浦语大模型实战营]——第三节:茴香豆:搭建你的 RAG 智能助理
  • ----------
  • [译] 怎样写一个基础的编译器
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CSS 提示工具(Tooltip)
  • js ES6 求数组的交集,并集,还有差集
  • k个最大的数及变种小结
  • node和express搭建代理服务器(源码)
  • spring boot下thymeleaf全局静态变量配置
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 测试如何在敏捷团队中工作?
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 盘点那些不知名却常用的 Git 操作
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 智能合约开发环境搭建及Hello World合约
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​zookeeper集群配置与启动
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​批处理文件中的errorlevel用法
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​如何在iOS手机上查看应用日志
  • ###C语言程序设计-----C语言学习(3)#
  • #QT(智能家居界面-界面切换)
  • (02)vite环境变量配置
  • (09)Hive——CTE 公共表达式
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (poj1.2.1)1970(筛选法模拟)
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)计算机毕业设计高校学生选课系统
  • (六)Hibernate的二级缓存
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)glDrawArry绘制
  • (转)jdk与jre的区别
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)重识new
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容