‘@/‘ 引入组件报红问题
- 使用 ‘@/xxx/xxx’ 引入组件,vetur报红 找不到module,但是可以正常运行问题
- 解决办法:1.把项目目录放工作区根目录;2.项目一定排列在第一位
引入第三方包报红
- 引入第三方库 报红找不到module,无法正常使用包,如qs、jQuery
- 解决办法1:使用@types进行包管理,然后正常引入
npm i @types/qs import qs from 'qs'
- 解决办法2:有些包不能用@types管理,自己写声明 XX.d.ts 不推荐
router配置里引入component组件的时候必须添加.vue后缀
Element表单验证报红问题
// 报错信息如下
// Property 'validate' does not exist on type 'Vue | Element | Vue[] | Element[]'.
// Property 'validate' does not exist on type 'Vue'.
// 解决办法
import { Form } from "element-ui";
( this.$refs.loginForm as Form ).validate((valid: boolean ) => {
...
});
// 如果不引入Form,把Form换成any也可以,但是typescript会报警告⚠
- 使用axios封装的请求,然后解构请求结果报错
// 报错信息 // Property 'XXX' does not exist on type 'AxiosResponse<any>' // 解决办法 // 新建axios.d.ts文案,添加如下内容,重启项目 import * as axios from 'axios' declare module 'axios' { interface AxiosInstance { (config: AxiosRequestConfig): Promise<any> } } @typescript/esline 报错 xxx_x is not in camel case
关闭esline驼峰校验
// 在.eslinetrc.js中配置如下: rules: { ... '@typescript-eslint/camelcase': 'off', }
TS使用”require”报错
- 提示报错信息:Cannot find name ‘require’. Do you need to install type definitions for node? Try ‘npm i –save-dev @types/node’
- 解决方案:
- 1.安装@types/node,npm i –save-dev @types/node;
- 2.在tsconfig.json中的compilerOptions中的types添加”node”;
- 3.在使用require前面添加declare var require:any
TS使用”this.xxx”报错
// 使用"this.$router.push("/xxx")" => Property '$router' does not exist on type 'Experiment'. // 解决: (this as any).$router.push("/xxx") this.$refs.mainVideo => Property 'clientWidth' does not exist on type 'Vue | Element | Vue[] | Element[]'. // Property 'clientWidth' does not exist on type 'Vue' // 解决: (this.$refs.mainVideo as any).clientWidth