Vue <脚本设置>,在不导入的情况下无法使用defineProps和defineEmits

Vij*_*iya 10 vue-props vuejs3 vue-composition-api vue-sfc vue-script-setup

根据官方文档

defineProps编译器宏只能defineEmits在. 它们不需要导入,并且在处理时被编译掉。<script setup><script setup>


问题定义

如果不导入它,我就无法使用definePropsand defineEmitsin <script setup>。请参阅下面所附的错误屏幕截图。

如果不将其导入,则无法使用defineProps


我正在执行的 vue 代码
<!-- HelloWorld.vue -->
<template>
  <h1>{{ props.message }}</h1>
</template>

<script setup>
// import { defineProps } from 'vue';
const props = defineProps({
  message: {
    type: String,
    required: true,
  }
});
</script>
Run Code Online (Sandbox Code Playgroud)
环境详情参考:
视图 ^3.2.6 (3.2.19)
vue-cli @vue/cli 5.0.0-beta.4
节点: v14.16.1
新项目管理 2012年6月14日

Vij*_*iya 6

我们可以使用以下解决方案之一来解决此问题。

  1. 使用Vite创建Vue项目。请点击此链接了解更多信息。
    yarn create vite <project-name> --template vue
  2. 在 eslint 配置文件中添加以下规则。请点击此链接了解更多信息。
// .eslintrc.js
module.exports = {
  extends: ['plugin:vue/base'],
  rules: {
    'vue/script-setup-uses-vars': 'error',
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 在第二个解决方案中,链接错误。它应该是: [link](https://eslint.vuejs.org/user-guide/#compiler-macros-such-as-defineprops-and-defineeits-generate-no-undef-warnings) ,代码应该是: `module.exports = { env: { 'vue/setup-compiler-macros': true } }` (3认同)