VueJS/Typescript - 找不到module“./components/Navigation”或其相应的类型声明

IT技术 javascript typescript vue.js vuejs2 vuejs3
2021-03-08 06:04:12

当我将脚本创建为typescript (lang="ts") 时,我收到一条错误消息

“找不到module‘./components/Navigation’或其相应的类型声明(Vetur 2307)。”。

我意识到这只有在我将 lang 设置为 ts 时才会发生,这正是我构建 Vue 应用程序所需要的。

应用程序.vue

<template>
  <Navigation />
</template>

<script lang="ts">
import Navigation from './components/Navigation'; // This is where I get the error message

export default {
  name: 'app',
  components: {
    Navigation,
  }
}
</script>

导航.vue

<template>
  <div id="nav">
    <router-link to="/">Home</router-link> 
    <router-link to="/about">About</router-link> 
    <router-link to="/categories">Categories</router-link> 
    <router-link to="/random">Random</router-link>
  </div>
  <router-view />
</template>

<script lang="ts">
export default {
  name: 'Navigation',
}
</script>
1个回答

src文件夹中添加shims-vue.d.ts具有以下内容的文件

视图 2:

declare module "*.vue" {
  import Vue from 'vue'
  export default Vue
}

视图 3:

declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

并导入组件及其扩展名.vue

 import Navigation from './components/Navigation.vue';

代替 :

import Navigation from './components/Navigation';
根据这个 github 评论“这是预期的行为......在下一个主要版本中,我们将完全停止支持单个文件组件的无扩展导入(目前只有类型检查错误)。”
2021-04-25 06:04:12
谢谢,我只是遇到了同样的错误,并且能够使用 shim 文件修复它。我希望官方的 Vue 3 Typescript 文档和指南会告诉你你需要这个。叹息
2021-05-05 06:04:12