vue中ts無法識(shí)別引入的vue文件,提示找不到xxx.vue模塊的解決
ts無法識(shí)別引入的vue文件,提示找不到xxx.vue模塊
在vue + ts項(xiàng)目中,在.ts中引入.vue文件,會(huì)提示打不到module,但是編譯可能成功,運(yùn)行也不報(bào)錯(cuò)
在src根目錄下,新建一個(gè)sfc.d.ts文件這個(gè)里面的
declare module "*.vue" {
? ? import Vue from 'vue'
? ? export default Vue
}在shims-vue.d.ts文件中官方文檔有一個(gè)地方是說寫到這里來著,所以shims-vue.d.ts中的這段要?jiǎng)h掉,把他們寫到
sfc.d.ts中,問題就可以解決了
vite+ts引入 .vue或 .ts文件時(shí)提示找不到模塊
一、先說第一個(gè)問題
.vue 文件引入時(shí),提示 找不到模塊“xxx.vue”或其相應(yīng)的類型聲明
方式一:在你的src目錄下創(chuàng)建一個(gè) .d.ts結(jié)尾的文件 例如:env.d.ts 里面內(nèi)容如下
declare module "*.vue" {
? import { DefineComponent } from "vue"
? const component: DefineComponent<{}, {}, any>
? export default component
}方式二:其實(shí)和方式一的方法類似,就是在src下創(chuàng)建一個(gè)創(chuàng)建一個(gè)文件夾,名字自定義,然后創(chuàng)建一個(gè) .d.ts文件,內(nèi)容和方式一 一樣。注:需要注意的是,如果創(chuàng)建文件夾,需要在你的tsconfig.json文件中聲明一下,結(jié)構(gòu)如下:我聲明的文件夾名稱為:typings

二、引入自定義的ts文件時(shí)
提示 找不到模塊“xxx.ts”或其相應(yīng)的類型聲明
我在使用時(shí)出現(xiàn)這個(gè)問題的原因是因?yàn)榕渲玫目旖萋窂綄?dǎo)致的

在vue中使用快捷路徑時(shí),只需要在vite.config.js中配置好對(duì)應(yīng)的別名即可
但是在vite中還需要在tsconfig.json中去配置你聲明的別名,如下:

需要配置baseUrl和paths兩個(gè)地方,配置好這兩個(gè)地方后,項(xiàng)目基本上就不會(huì)在提示關(guān)于.ts文件找不到模塊的問題了,具體為什么要這樣寫,暫時(shí)還不太清楚
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue利用Mixin輕松實(shí)現(xiàn)代碼復(fù)用
Mixin,中文翻譯為"混入",在Vue中是一種非常有用的功能,可以解決許多開發(fā)中的常見問題,下面就讓我們一起深入了解一下Mixin在Vue中解決了哪些問題吧2023-06-06
一文帶你了解threejs在vue項(xiàng)目中的基本使用
three.js是一個(gè)用于在Web上創(chuàng)建三維圖形的JavaScript庫,它可以用于創(chuàng)建各種類型的三維場景,包括游戲、虛擬現(xiàn)實(shí)、建筑和產(chǎn)品可視化等,下面這篇文章主要給大家介紹了關(guān)于如何通過一文帶你了解threejs在vue項(xiàng)目中的基本使用,需要的朋友可以參考下2023-04-04
vue3在table里使用elementUI的form表單驗(yàn)證的示例代碼
這篇文章主要介紹了vue3在table里使用elementUI的form表單驗(yàn)證的示例代碼,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
使用Vue-cli 3.0搭建Vue項(xiàng)目的方法
這篇文章主要介紹了使用Vue-cli 3.0搭建Vue項(xiàng)目的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
vue keep-alive列表頁緩存 詳情頁返回上一頁不刷新,定位到之前位置
這篇文章主要介紹了vue keep-alive列表頁緩存 詳情頁返回上一頁不刷新,定位到之前位置,本文通過實(shí)例代碼效果圖展示給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-11-11

