vue3+ts项目引入vue组件路径报错Cannot find module '~/layout/index.vue' or its corresponding

769 阅读1分钟

问题:

image.png

原因:

引入ts以后,ts只能识别.ts结尾的文件,识别不了.vue文件,需要另外配置

解决办法:

1、项目根目录创建**.d.ts文件,比如env.d.ts,如果是用vite创建项目,会自动生成vite-env.d.ts文件,加入相同配置,.d.ts文件是 ts 用来声明(declare)变量、模块、type、interface等。在 .d.ts声明变量或者模块等东西之后,在其他地方可以不用import导入就可以直接使用,而且有语法提示。

image.png 2、ts 配置文件tsconfig.json中会配置引入.d.ts文件

image.png

注意

如果要使用特殊字符(~或者@)相对路径引入,需要在vite.config.ts中添加响应alias配置

image.png

declare

declare 的作用

  • ts 用户在使用别人编译好的 ts 代码时,TSC 会寻找与 js 文件对应的 .d.ts文件,让 ts 知道项目中涉及哪些类型,并有代码类型提示,无需重新编译 ts 代码,极大减少编译时间。
  • 定义在项目中任何地方都可以使用的全局类型,无需导入就可以使用(外参类型声明,需要和变量声明区别开)。
  • 描述通过 npm 安装的第三方模块(外参模块声明)。
  • .d.ts文件里,顶级声明必须以declare开头。
  • .d.ts文件里,以declare声明的变量和模块后,其他地方不需要引入,就可以直接使用。