Skip to content

Eslint 搭配 defineProps 报错问题

关于

<script setup> 中如果想要使用 propsemits 进行组件通信,

就必须使用 definePropsdefineEmits 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 配置文档

Released under the MIT License.