vue3 vite idea中control+鼠标单击不能跳转到文件定义的解决办法
用idea鼠标点击选中的部分提示Cannot find declaration to go to
这个问题通常是因为 IDE 无法找到类型声明。让我们添加必要的类型声明:
首先在项目根目录创建 env.d.ts 文件:
/// <reference types="vite/client" />
// Vue 组件的类型声明
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
// 静态资源的类型声明
declare module '*.svg' {
const content: any
export default content
}
declare module '*.png' {
const content: any
export default content
}
declare module '*.jpg' {
const content: any
export default content
}
declare module '*.jpeg' {
const content: any
export default content
}
更新 tsconfig.json:
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
/* Type Checking */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
/* Paths */
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
},
"types": ["vite/client"]
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue",
"env.d.ts"
],
"references": [{ "path": "./tsconfig.node.json" }]
}
如果还没有 tsconfig.node.json,也创建它:
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
}
安装依赖
pnpm install -D @types/node vue-router@4 @types/vue-router
在项目根目录创建或修改 tsconfig.json:
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"module": "ESNext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"isolatedModules": true,
"esModuleInterop": true,
"lib": ["ESNext", "DOM"],
"skipLibCheck": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
},
"types": ["node", "vue-router"],
"outDir": "./dist"
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"references": [{ "path": "./tsconfig.node.json" }]
}