发布时间:2023-04-25 文章分类:WEB开发, 电脑百科 投稿人:李佳 字号: 默认 | | 超大 打印

Vue3报错:Property “xxx” was accessed during render but is not defined on instance.

翻译:属性“xxx”在呈现期间被访问,但没有在实例上定义。

其实就是在模板上有,但是在script上没有定义

很多同学跟说这不是报错,是警告,其实只要是在渲染页面时出现的问题,我们都可以说成是报错

因为如果有警告,到项目发布的时候是会出现问题的

所以不管是报错还是警告,出现了就必须先解决掉

跟着这个报错的还有下面两个报错:
Unhandled error during execution of render function

意思是在执行渲染函数时未处理的错误
Vue3报错:Property “xxx“ was accessed during render but is not defined on instance.
Unhandled error during execution of scheduler flush. This is likely a Vue internals bug.
这个就牛逼了,警告说可能是vue内部的bug,执行调度器刷新期间未处理的错误。
Vue3报错:Property “xxx“ was accessed during render but is not defined on instance.
这三个报错都是一起出现的,所以找问题还是挺好找的,解决bug的提供一下思路

出现bug的背景是我在某一个文件中写了太多的代码,所以想把其中一部分封装成组件再引用进来,然后就新建了一个带有初始模板的页面,再把原页面中的部分代码函数样式复制过去

初始模板如下:

<template>
</template>
<script>
</script>
<style>
</style>

通过第一个报错,模板上有,但是没有定义,我们可以去script找,发现script里写了没有问题,然后第二三个报错并不能给我什么有利的信息,然后我就发现script中没有加上组合式 API即setup,加上了就没报错了

所以问题的出现原因是在新创建的vue模板文件中没有加上语法糖

解决问题就是<script setup>

通过此次报错,需要记一下在新建vue文件封装组件的时候检查标签有没有少写