【Bug记录】defineEmits 在 TS 项目报错
前言
单文件组件 <script setup> 是 Vue3.2 版本后非常流行的写法。
但是在开发过程中,按照官网使用 defineEmits ,结果项目报错,无法运行。
错误截图
Unexpected newline between function name and paren func-call-spacing
错误翻译:函数名与括号function -call-spacing之间的意外换行符
vscode 错误

浏览器错误

官网使用截图
明明完全按官方文档方式使用,居然报错了,踩到大坑。


原因归因
- 项目使用了 EsLint
- defineEmits 代码换行了
解决方案(提供三种)
报错代码
- 按照官网提示,结果代码运行报错
import { defineEmits } from 'vue-demi'
// Unexpected newline between function name and paren.(eslintfunc-call-spacing)
const emit = defineEmits<{
(event: 'change'): void
(event: 'update', id: number): void
}>()
方案1:代码不换行
- 定义 defineEmits 注解的时候不换行。
import { defineEmits } from 'vue-demi'
// 注意添加分号 ;
const emit = defineEmits<{(event: 'change'): void; (event: 'update', id: number): void }>()
方案2. 抽离类型注解
- 把类型注解抽离出来再引用。
import { defineEmits } from 'vue-demi'
// 抽离类型注解
type Emit = {
(event: 'change'): void
(event: 'update', id: number): void
}
const emit = defineEmits<Emit>()
方案3:屏蔽 eslint 对当前规则检查(推荐)
- 自己修改 Eslint 规则,打开项目根目录下的
.eslintrc.js文件,添加规则屏蔽:
这种写法不需要修改源码
module.exports = {
root: true,
env: {
node: true,
},
extends: [
"plugin:vue/vue3-essential",
"@vue/standard",
"@vue/typescript/recommended",
],
parserOptions: {
ecmaVersion: 2020,
},
rules: {
+ // 屏蔽错误
+ // "func-call-spacing": "off",
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
},
};
【Bug记录】defineEmits 在 TS 项目报错的更多相关文章
- ts项目报错:Import sources within a group must be alphabetized
报错:Import sources within a group must be alphabetized. 原因:import名称排序问题,要求按照字母从小到大排序:修改 tslint.json 中 ...
- LayaBox IDE 安装后执行项目报错解决方案的一些记录
1.打开IDE后出现“路径xxx未指向有效地tsserver安装.将禁用TypeScript语言功能.”提示: 这是由于杀毒软件吧ts对应的js文件作为病毒删除导致的,一般到杀毒软件的历史界面中将ts ...
- 使用VS2017新建的Web项目报错:Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1
使用VS2017新建的Web项目报错: 看到这样的错误提示,毫无意义.赶脚这应该是VS2017的BUG,没有显示错误的位置.于是用dotnet restore手动还原,结果在控制台中终于显示了详细的错 ...
- Eclipse开发Android项目报错解决方案详细教程,最新版一篇就够了!
本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家. 报错信息 出错一:The import and ...
- tomcat7 启动项目报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()
JDK版本:jdk1.8.0_77 Tomcat 版本:apache-tomcat-7.0.47 异常重现步骤: 1.完成项目部署 2.启动Tomcat 异常头部信息:java.lang.NoSuch ...
- STS新建的maven项目报错问题
STS新建的maven项目报错问题 解决方法:打开pom.xml文件添加 <dependency> <groupId>javax.servlet</groupId> ...
- jacob 多个web项目报错 jacob-1.14.3-x64.dll already loaded in another classloader jacob
多个web项目报错 jacob-1.14.3-x64.dll already loaded in another classloader jacob 这个问题困扰了很久,网上很多解决方案,很多都不成功 ...
- myeclipse 10 载入新的项目报错Cannot return from outside a function or method
myeclipse 10 载入新的项目报错Cannot return from outside a function or method 解决方法: 方法一: window -->prefere ...
- 项目报错,tomcat中引起
1.项目报错,但发现工程并没有错.此刻错误应该定位如下,即工程里面引用的jar可能有错,可能是路劲变了....
- eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“
你的位置:首页 > Java编程 > eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“ eclipse发布项目报错:Multipl ...
随机推荐
- 【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
1.问题描述: 人脸活体检测返回上一页App由沉浸式变为非沉浸式多了上下安全区域. 解决方案: 检测结束后需要自己去设置沉浸式配置. 2.问题描述: Vision Kit文字识别是本地识别,还是上传至 ...
- Qt6中重大改变的QtMultimedia多媒体模块
一.前言 Qt 6.2 的第一个测试版刚刚发布,并在多个其他新附加组件中加入了全新的 Qt 多媒体模块.Qt Multimedia 是一个模块,它在 Qt 6 中发生了一些相当大的变化. 在很多方面, ...
- C#操作MySQL数据库——思路简单清晰
1.下载mysql.Data.dll,在解决方案->引用中引入,并在文件头部引入 using MySql.Data.MySqlClient; 2.创建MySqlConnection对象(链接库) ...
- Web网页端IM产品RainbowChat-Web的v5.0版已发布
一.关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIM ...
- Bogus:.NET的假数据生成利器
我们在项目开发中,为了保证系统功能完整.准确性,我们都需要模拟真实数据进行测试. 今天推荐一个开源库,方便我们制造假数据测试. 01 项目简介 Bogus 是一个开源的 .NET 库,它提供了一个强大 ...
- 修复展锐SL8541E 偶现开机无法启动OTG
哎,又是紫光展锐,真的拉啊!!! 问题是这样的,当USB口插上OTG线再开机,会偶现无法启动OTG.这个问题排查了好久,现在终于改好了,下面记录一下分析过程. 异常log[上]和正常log[下] 前面 ...
- 《深入理解Mybatis原理》MyBatis数据源与连接池详解
MyBatis数据源DataSource分类 MyBatis把数据源DataSource分为三种: UNPOOLED 不使用连接池的数据源 POOLED 使用连接池的数据源 JNDI 使用JNDI实现 ...
- C#轻松实现条形码二维码生成及识别
一.前言 大家好!我是付工. 今天给大家分享一下,如何基于C#来生成并识别条形码或者二维码. 二.http://ZXing.Net 实现二维码生成的库有很多,我们这里采用的是http://ZXing. ...
- 【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7901522.html?templateId=1718516 现象 将数据通过SQ ...
- Slate文档编辑器-Node节点与Path路径映射
Slate文档编辑器-Node节点与Path路径映射 在之前我们聊到了slate中的Decorator装饰器实现,装饰器可以为我们方便地在编辑器渲染调度时处理range的渲染,这在实现搜索替换.代码高 ...