如何解决报错vue.runtime.esm.js:4605 [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'musicSize')" found in ---> <Anonymous> <App> at src/App.vue <Root>在<template> <div> <div class="flex"> <i class="iconfont icon-fanhuijiantou" @click="returntop"></i> <i class="iconfont icon-diandian"></i> </div> <div class="container"> <h5>{{ name }}</h5> <p>{{ alias }}</p> <p>{{ formatNumber(fansCnt) }}</p> <p class="hheight">{{ imageDesc }}</p> <div class="one"> <span>+ 关注</span> <i class="iconfont icon-xiangxiajiantou"></i> </div> </div> <van-tabs v-model="active" class="over"> <van-tab title="主页"> <homePage></homePage> </van-tab> <van-tab title="歌曲" :badge="singerdeatilList.artist.musicSize"> <songView :id="this.id"></songView> </van-tab> <van-tab title="专辑" :badge="singerdeatilList.artist.albumSize"> <album-view :id="this.id"></album-view> </van-tab> <van-tab title="视频" :badge="singerdeatilList.videoCount"> <videoView></videoView> </van-tab> </van-tabs> </div> </template> <script> import { singerDetailsApi, singerFansApi } from "@/api/singer"; import albumView from "@/views/singer/components/albumView.vue"; import homePage from "@/views/singer/components/homePage.vue"; import songView from "@/views/singer/components/songView.vue"; import videoView from "@/views/singer/components/videoView.vue"; export default { components: { albumView, homePage, songView, videoView, }, data() { return { active: 1, singerdeatilList: [], id: "", fansCnt: "", name: "", //歌手姓名 imageDesc: "", //歌手身份 alias: [], //歌手别名 musicSize: "", //音乐数量 albumSize: "", //专辑数量 }; }, methods: { returntop() { this.$router.push("/singerClass"); }, // fn(fans) { // if (fans > 10000) { // return (fans / 10000).toFixed(1) + "万粉丝"; // } // }, }, async created() { try { // 用query页面数据不会丢失 this.id = this.$route.query.id; let { data } = await singerDetailsApi(this.id); let fans = await singerFansApi(this.id); this.singerdeatilList = data.data; // 歌手名字 this.name = this.singerdeatilList.artist.name; // console.log(this.singerdeatilList.artist.name); // 粉丝数量 this.fansCnt = fans.data.data.fansCnt; // console.log(fans.data.data); // console.log(this.singerdeatilList); // 歌手身份 this.imageDesc = this.singerdeatilList.identify.imageDesc; // 歌手别名 this.alias = this.singerdeatilList.artist.alias[0]; } catch (err) { console.log(err); } }, };这段代码里
时间: 2023-12-03 21:44:53 浏览: 673
报错信息显示 `TypeError: Cannot read properties of undefined (reading 'musicSize')`,意味着在模板中使用 `singerdeatilList.artist.musicSize` 时,`singerdeatilList.artist` 为 `undefined`。
这可能是因为在 `created()` 生命周期中,异步请求的数据还没有返回,导致 `singerdeatilList` 为空。因此,可以在模板中增加一个条件判断,当 `singerdeatilList.artist` 存在时才渲染 `:badge` 属性。
例如:
```
<van-tab title="歌曲" v-if="singerdeatilList.artist" :badge="singerdeatilList.artist.musicSize">
<songView :id="this.id"></songView>
</van-tab>
```
这样就可以避免因为数据还未返回而导致的报错问题。
相关问题
vue.runtime.esm.js:4605 [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'value')"
vue.runtime.esm.js:4605是Vue运行时的一个文件,它是Vue框架的一部分,用于处理渲染错误。在你提供的错误信息中,报告了一个渲染错误:"TypeError: Cannot read properties of undefined (reading 'value')"。
这个错误通常发生在模板中尝试访问一个未定义的属性或变量时。可能的原因是你在模板中使用了一个未定义的变量或属性,导致无法读取其值。
为了解决这个问题,你可以检查以下几个方面:
1. 确保你在模板中使用的变量或属性已经正确定义和初始化。
2. 检查模板中是否存在拼写错误或语法错误。
3. 确保你传递给组件的数据是正确的,并且包含所需的属性。
如果你能提供更多的代码或错误上下文,我可以给出更具体的帮助。
上述代码报错e.runtime.esm.js:619 [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'abbreviation')"报错
根据报错信息,这个错误是在 Vue 的渲染过程中发生的。具体来说,可能是在 Vue 组件的模板中尝试访问了一个未定义的属性 'abbreviation'。
你可以检查一下代码,看看是否有这样的情况发生。有可能是数据没有传递到组件中,或者组件的数据结构不正确导致无法访问 'abbreviation' 属性。你可以使用浏览器的开发者工具来调试代码,查看具体的错误信息和代码位置。
阅读全文