解决找不到模块“@/components/HelloWorld.vue”或其相应的类型声明。

解决找不到模块“@/components/HelloWorld.vue”或其相应的类型声明。

背景

问题:使用vite模板生成项目,配置别名后,使用别名导入文件会提示 “找不到模块“@/components/HelloWorld.vue”或其相应的类型声明。”
原因:别名导致typescript找不到解析的模块或其相应的类型声明。
在这里插入图片描述

安装项目

pnpm create vite my-vue-app --template vue-ts
cd my-vue-app
pnpm i

配置别名 ( vite.config.ts目录 )

vite.config目录需要引入 fileURLToPath (需要安装@types/node),配置resolve,

pnpm add @types/node -D
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { fileURLToPath } from "node:url";

// https://vitejs.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
  },
  plugins: [vue()],
});

将app.vue文件中的Helloword组件相对路径导入改成别名路径导入,就会提示 “找不到模块“@/components/HelloWorld.vue”或其相应的类型声明”

import HelloWorld from "./components/HelloWorld.vue";
给改成别名
import HelloWorld from "@/components/HelloWorld.vue";

解决方式

1. 方法1
tsconfig.json增加baseUrl和paths的配置
baseUrl和path解释文档:
中文文档-路径映射
英文文档-Path mapping

{
  "compilerOptions": {
    /* alias */
    "baseUrl": "src",
    "paths": {
      "@/*": ["./*"],
      "@": ["./"]
    },
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

2. 方法2

在src下的vite-env.d.ts文件增加模块定义

declare module "*.vue" {
  import type { DefineComponent } from "vue";
  const component: DefineComponent<typeof DefineComponent>;
  export default component;
}
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值