导入声明与Vue 3.3中'defineProps'的本地声明冲突

gc0ot86w  于 2023-05-23  发布在  Vue.js
关注(0)|答案(1)|浏览(4086)

我在今天更新node_modules(和Vue到v3.3)后开始出现这些错误。
Vue 3.3、WebPack(非Vite)和VS Code Volar正在使用。这个项目是巨大的。
每个包含<script setup lang="ts">*.vue文件都包含import { defineProps, defineEmits } from 'vue'。它以前工作得很好,现在仍然编译和工作得很好。Eslint也成功通过。
但是现在VS Code在每个文件中突出显示导入的definePropsdefineEmits。错误是:

Import declaration conflicts with local declaration of 'defineProps'.ts(2440)
(alias) function defineProps<PropNames extends string = string>(props: PropNames[]): { [K in keyof Readonly<{ [key in PropNames]?: any; }>]: Readonly<{ [key in PropNames]?: any; }>[K]; } (+2 overloads)
import defineProps
const defineProps: {
    <PropNames extends string = string>(props: PropNames[]): { [K in keyof Readonly<{ [key in PropNames]?: any; }>]: Readonly<{ [key in PropNames]?: any; }>[K]; };
    <PP extends ComponentObjectPropsOptions<...> = ComponentObjectPropsOptions<...>>(props: PP): { [K in keyof Readonly<...>]: Readonly<...>[K]; };
    <TypeProps>(): DefineProps<...>;
}

现在每个*.vue文件在VS Code中都被标记为红色,这很烦人。
你知道该去哪里解决这个问题吗?

5lhxktic

5lhxktic1#

这是因为'defineProps'与编译器宏冲突。删除导入。
如果构建不起作用,请确保您在package.json中安装了“eslint-plugin-vue”版本8及以上。
添加

"vue/setup-compiler-macros": true,

到**.eslintrc.js文件的env**部分。

相关问题