vue3 报错解决:找不到模块或其相应的类型声明。

vue3 引入组件报错Cannot find module './components/Person' or its corresponding type declarations.
在这里插入图片描述
检查了路径正确,文件存在,Perosn.vue文件内部没有任何报错。
所以为啥找不到文件啊?

这个报错让我很迷惑。百度了一堆解决方案:

  1. 卸载或禁用 Vetur 插件。
    这个插件是vue 2.x 的插件。
    卸载这个插件后,去掉了vs code弹出的提示:In the vue 3 project, The Vue Language Features (Volar) is new recommended ...
    如果在vs code的配置文件中有Vetur的相关配置,也要注释掉。

vue3在引入组件时报has no default export,意思就是没有进行默认导出。
在vs code 的配置文件中加一个配置:"vetur.validation.script": false
这个配置项是关于vs code的Vetur 插件的设置,用于控制是否启用Vue文件中JavaScript代码的验证。
当设置 "vetur.validation.script": false 时,关闭Vetur插件对Vue文件中的JavaScript/TypeScript代码进行语法检查。

  1. 看到有同学提供如下图所示的解决方案,我照着做了,没什么用。我就把这个插件启用了。

  2. 安装TypeScript Vue Plugin (Volar)插件
    这个插件已经弃用,并且推荐安装插件 Vue-Official
    我已经安装了插件Vue-Official。这个解决方案也无效。
    在这里插入图片描述

  3. 我在vs code 设置里将ts校验去掉,就不报红了
    在这里插入图片描述
    在终端执行命令:npm run dev
    事实证明,不报红 绝对不等于 错误不存在!
    在浏览器中显示错误:[plugin:vite:import-analysis] Failed to resolve import "./components/Person"

善用搜索工具,看到这了这两篇:
[plugin:vite:import-analysis] 无法解析导入 #2213
插件:vite:import-analysis - 分析导入时失败,因为内容包含无效的JS语法。- Vue 3

看完并没有找到解决方案…

最终,我查看了client.d.ts文件,在文件中没有声明.vue文件。
env.d.ts文件了加了.vue声明:

declare module '*.vue' {
  import { ComponentOptions } from 'vue'
  const componentOptions: ComponentOptions
  export default componentOptions
}

没起作用!!!
迫于无奈,我去翻了vite官网
在这里插入图片描述
最终解决问题的解决方案:
在项目根目录下创建了shims.d.ts:

declare module '*.vue' {
  import { ComponentOptions } from 'vue'
  const componentOptions: ComponentOptions
  export default componentOptions
}

env.d.ts中使用shims.d.ts:

/// <reference types="./shims.d.ts" />
/// <reference types="vite/client" />

问题虽然解决了,但我更加迷茫了。
因为创建vue3项目的时候,在App.vue里,官方给的例子就是通过import引入的vue文件:
在这里插入图片描述
一个全新的vue项目,运行npm run dev可以成功运行,没有任何报错!

这也是我在遇到报错,打从一开始就不认为是ts无法理解.vue的原因。

当我新创建一个vue3新项目,想从头复盘并记录这个错误时,在新项目的App.vue中引用Person.vue,没有任何报错!

因此,建议各位同学在遇到这个问题的时候,首选解决方案是删除node_module文件夹,重新下载依赖。如果不能解决问题,再试试上面的办法。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中,使用TypeScript配置路径别名时遇到不到模块或其相应类型声明的问题,可以按照以下步骤解决: 1. 在项目根目录下的tsconfig.json文件中,到"compilerOptions"字段,确保有以下配置: ``` "baseUrl": "./", "paths": { "@/*": ["src/*"] } ``` 这样配置可以将路径别名"@/"映射到"src/"。 2. 确保项目根目录下的vite.config.js文件中有正确的配置。请确认resolve.alias配置如下: ``` resolve: { alias: { '@': path.resolve(__dirname, 'src') } } ``` 这样配置可以使vite正确识别路径别名"@/"。 3. 如果仍然遇到不到模块或其相应类型声明的问题,可以尝试执行以下命令: ``` npm add @types/node --save-dev ``` 这样可以安装Node.js的类型声明文件,以解决类型声明问题。 通过以上步骤,您应该能够解决Vue 3中使用TypeScript配置路径别名时遇到不到模块或其相应类型声明的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3.x+vite+ts+vue-router@4.x 路由使用demo](https://download.csdn.net/download/csl125/86249355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue3+vite+ts 配置别名@报错不到模块](https://blog.csdn.net/weixin_43754395/article/details/128112575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vue3+TS更改文件系统路径别名报错不到模块“@/store”或其相应类型声明。ts(2307)](https://blog.csdn.net/qq_52855464/article/details/128276126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值