Typescript 找不到模块 `./app` 或其相应的类型声明 ts(2307)
Typescript cannot find module `./app` or its corresponding type declarations ts(2307)
Typescript 在 src/main.ts
中的 VSCode 中显示以下错误,但是当我 运行 项目时它 运行 没有错误或警告。
我的tsconfig文件如下:
{
"compilerOptions": {
"outDir": "dist",
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"],
"baseUrl": "src",
"allowJs": true,
"paths": {
"@/*": ["./*"],
"~/*": ["./*"]
},
"suppressImplicitAnyIndexErrors": true
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"exclude": ["node_modules", "dist"]
}
App.vue
找到 src/App.vue
文件内容如下
<template>
<div>
<!-- <h1 v-if="showModal">HELLO WORLDDNIOAS</h1> -->
<!-- <SignInModal :show-modal="showModal" /> -->
<HomePage />
<!-- <router-view></router-view> -->
</div>
</template>
<script lang="ts">
import { defineComponent, computed, ref } from "vue";
import HomePage from "@/components/HomePage.vue";
import SignInModal from "@/components/SignInModal.vue";
import Test from "@/components/Test.vue";
import { useStore } from "vuex";
export default defineComponent({
name: "App",
components: {
HomePage,
SignInModal,
Test,
},
setup() {
const store = useStore();
const hello = ref(false);
return {
showModal: computed<boolean>(
() => store.getters["modal/showModal"]
),
hello,
};
},
});
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
}
</style>
我还在 shims-vue.d.ts
中得到类型定义如下:
import Vue, { DefineComponent } from "vue";
declare module "*.vue" {
//eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>;
export { component, Vue };
}
如前所述,应用程序在控制台中加载正常且没有错误,App.vue
显示正确。为什么 VSCode 给我这个错误?
Vue 3 没有导出 Vue
对象,正确的模块声明如下:
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
Typescript 在 src/main.ts
中的 VSCode 中显示以下错误,但是当我 运行 项目时它 运行 没有错误或警告。
我的tsconfig文件如下:
{
"compilerOptions": {
"outDir": "dist",
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"],
"baseUrl": "src",
"allowJs": true,
"paths": {
"@/*": ["./*"],
"~/*": ["./*"]
},
"suppressImplicitAnyIndexErrors": true
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"exclude": ["node_modules", "dist"]
}
App.vue
找到 src/App.vue
文件内容如下
<template>
<div>
<!-- <h1 v-if="showModal">HELLO WORLDDNIOAS</h1> -->
<!-- <SignInModal :show-modal="showModal" /> -->
<HomePage />
<!-- <router-view></router-view> -->
</div>
</template>
<script lang="ts">
import { defineComponent, computed, ref } from "vue";
import HomePage from "@/components/HomePage.vue";
import SignInModal from "@/components/SignInModal.vue";
import Test from "@/components/Test.vue";
import { useStore } from "vuex";
export default defineComponent({
name: "App",
components: {
HomePage,
SignInModal,
Test,
},
setup() {
const store = useStore();
const hello = ref(false);
return {
showModal: computed<boolean>(
() => store.getters["modal/showModal"]
),
hello,
};
},
});
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
}
</style>
我还在 shims-vue.d.ts
中得到类型定义如下:
import Vue, { DefineComponent } from "vue";
declare module "*.vue" {
//eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>;
export { component, Vue };
}
如前所述,应用程序在控制台中加载正常且没有错误,App.vue
显示正确。为什么 VSCode 给我这个错误?
Vue 3 没有导出 Vue
对象,正确的模块声明如下:
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}