昨日我尝试使用vue3 setup + ts + vite进行vue3项目的实现,遇到此问题:
Cannot find module ... or its corresponding type declarations.(ts2307)
文件报错类型以及ts官方错误说明:
这里以别名"
@
"为例子:
// .vue文件
<script setup lang="ts">
import LoginApi from '@/apis/loginApi'; // (ts2307)
import { getDate } from '@/utils/date'; // (ts2307)
</script>
// .ts文件
import LoginApi from '@/apis/loginApi'; // (ts2307)
2307
|
错误
|
Cannot find module '{0}'.
|
找不到模块“{0}”。
|
问题解决方案:
解决方向:开发工具配置 or 项目配置
一、开发工具有关:这里只说使用到的vscode
1、优先查看自己vscode的工作的ts位置及版本
首先,mac: command + shift + P (windows应该也是类似案件cmmand换成Alt或者Ctrl)打开搜索 type 就会显示如下:
然后,让Volar去选择对应的工作位置及版本:
最后,请选择使用工作台版本(这是在寻找问题时候看到尤大大给出的答案)。
切记!!!选择后完全关闭vscode重启!!!
2、可能有人看到
Volar:Select TypeScript Version...
这里Volar就是一个vscode插件,对应是为了Vue3的使用。(插件库直接搜索Volar就可以下载)
要编写Vue3所以请下载Volar并关闭Vetur,并注释或删除到你所有的Vetur用户设置:
command + shift + P (windows应该也是类似案件cmmand换成Alt或者Ctrl)打开搜索 setting 就会显示如下:
打开setting.json文件全局搜索“vetur”并删除或注释掉相关设置保存。
切记!!!保存后完全关闭vscode重启!!!
二、
项目配置有关:这里构建工具使用vite,但webpack,gulp应该是类似的:
2个配置文件需要相互设置好:
tsconfig.json
"compilerOptions": {
// ...
"baseUrl": "./", // 这里需要配置
"paths": {
"@/*": ["./src/*"] // 这里需要配置
// 如果baseUrl设置为'src',那paths就应该配置为{"@/*": "./*"},如下:
// "baseUrl": "src",
// "paths": {
// "@/*": ["./*"]
// 相关baseUrl,paths说明请查看官方文档
// include也需要配置以下:
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"exclude": ["node_modules"]
vite.config.ts
resolve: {
alias: { // 这里就是需要配置resolve里的别名
"@": path.join(__dirname, "./src"), // path记得引入
// 'vue': 'vue/dist/vue.esm-bundler.js' // 定义vue的别名,如果使用其他的插件,可能会用到别名
保存好后,切记!!!保存后完全关闭vscode重启!!!
PS:开发工具和项目配置都需要确认好,构建工具和js框架应该都是类似的问题,设置好就没问题!
希望能帮大家解决问题,如果还有问题可以提出来,大家互相交流交流,一起解决,一起学习!
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
vue
+
TS
项目
中import图片时报错Cannot find
module
‘xxx’ or i
ts
cor
re
sponding
type
declaration
s
在
vue
+
ts
项目
中使用import的形式来引入照片时,会提示以下报错:
使用import的形式引入图片,
ts
无法识别非代码资源;但是js中这种写法是没有
问题
的。
我们需要新建一个.d.
ts
后缀的文件,文件中声明这个
module
(格式如下),而且这个文件只能放置在
ts
config.json文件中的include属性缩配置的文
【VSCode - Vetur 插件报错】Cannot find
module
‘
vue
‘ or i
ts
cor
re
sponding
type
declaration
s.Vetur(2307)
上述
问题
的产生,一般是由于 Visual Studio Code 中安装了 Vetur 插件,它要求:
1,
项目
在工作区根目录(就是把
项目
文件夹拖进 vscode 后的效果)
2,
项目
排在第一位(不在第一位可以鼠标拖动
项目
移到第一位)
可以看见我是在E:/test目录下使用
vite
创建的runoob-
这个错误通常是因为你的应用程序使用了一个不支持的 JavaScript 方法string.proto
type
.padstart。这个方法是ES2017规范中新增的方法,可以在字符串前面添加指定数量的字符来达到特定的长度要求。
为了
解决
这个
问题
,你需要检查你的代码中是否有使用了string.proto
type
.padstart这个方法。最好使用一个支持ES2017规范的JavaScript引擎来运行你的应用程序,例如Google Chrome、Mozilla Firefox等现代浏览器。
如果你的应用程序必须在不支持ES2017规范的JavaScript引擎上运行,你可以尝试手动实现padstart方法。以下是这个方法的一个简单的实现:
String.proto
type
.padStart = function(targetLength,padString) {
targetLength = targetLength>>0; //floor if number or convert non-number to 0;
padString = String(
type
of padString !== 'undefined' ? padString : ' ');
if (this.length > targetLength) {
return String(this);
else {
targetLength = targetLength-this.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
return padString.slice(0,targetLength) + String(this);
你可以将这个代码片段放在你的应用程序前面,这样你就可以使用padstart方法了。但是,你需要意识到,手动实现这个方法并不是最好的
解决
方案,因为它可能会使你的代码复杂并且难以维护。如果有可能,最好的选择是使用支持ES2017规范的JavaScript引擎来运行你的应用程序。
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
61426
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
Acaibird,:
EventSource前端使用(需要添加header等自定义配置)
躁动的小灵魂:
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
爱吃水煮鱼~:
解决Cannot download “https://github.com/sass/node-sass/releases/download...问题
tuliplover5769:
vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)
Boneex: