Eslint 搭配 defineProps 报错问题
关于
在 <script setup>
中如果想要使用 props
和 emits
进行组件通信,
就必须使用 defineProps
和 defineEmits
API 来进行预先声明。
根据官方文档,这两个 API 都是只能在 <script setup>
中使用,并且不需要单独引入的编译器宏。
但是真正使用起来,如果不正常 import
引入,会被 Eslint
检测错误。
如果正常引入,控制台中会报一则 Warning:
sh
[@vue/compiler-sfc] `defineProps` is a compiler macro and no longer needs to be imported.
[@vue/compiler-sfc] `defineEmits` is a compiler macro and no longer needs to be imported.
简单解释,这两个 api 我认识,不用你多此一举再引入了。
虽然 Warning 不是错误,但是它存在在哪里总觉得心里不舒服。
解决方法
由于此提示是 Eslint
报出,可以修改 .eslintrc.js
来禁止覆盖。
示例 .eslintrc.js
:
js
module.exports = {
// 配置全局变量 "writable" 允许覆盖变量,"readonly" 禁止覆盖
globals: {
defineProps: 'readonly',
defineEmits: 'readonly'
}
}
参考 ESLint 配置文档