vscode vite+vue3+typescript项目
volar已弃用, 取而代之的是 Vue - official
在组件A.vue中引入 import PrintRecord from "@/components/print-ticket/PrintRecord.vue"; 鼠标右击,跳转到声明文件,而不是组件文件,这个怎么解决?( src/vite-env.d.ts 中删除内容后,ctrl+鼠标左键就能正常跳转到组件文件,但会标红(找不到声明文件))
在 src/vite-env.d.ts 中配置了 vue的声明文件
/// <reference types="vite/client" />
declare module "*.vue" {
import { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}
src/tsconfig.app.json
{
"compilerOptions": {
"composite": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "preserve",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
},
"typeRoots": [
"./node_modules/@types",
"./src/types"
]
},
"include": ["src/**/*.ts","src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
vite.config.ts
import { fileURLToPath, URL } from "node:url"; // cnpm install @types/node --save-dev
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import topLevelAwait from "vite-plugin-top-level-await"; //引入顶级语法
import VueSetupExtent from "vite-plugin-vue-setup-extend";
import { resolve } from "node:path";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
VueSetupExtent(), //这里调用
//@ts-ignore
topLevelAwait({
promiseExportName: "__tla",
promiseImportName: (i: number) => `__tla_${i}`,
}),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
resolve: {
alias: {
// "@": fileURLToPath(new URL("./src", import.meta.url)),
"@": resolve(__dirname, "./src"), //解决路径问题
},
},
});