一、报错现象

vue3 + element plus 项目,本地启动时,页面进行所有操作都正常;部署到生产环境后,数据驱动DOM变化的操作会导致如下报错。

二、可能原因及解决方案

1、v-if 导致
在 v-if 值为 false 时,如果操作了 v-if 控制的 DOM,可能会因为该 DOM 元素不存在而报错。
解决方案:v-show 替换 v-if

2、el-dialog 组件导致
el-dialog 组件的问题,起初设置弹框是默认关闭的,所以DOM中没有加载弹窗,不存在弹框中包含的内容,当打开弹框之后,再进行关闭,弹框打开后加载的 DOM 元素并没有被销毁,所以可能是因为一些多余存在的 DOM 元素而报错。最后是通过给 el-dialog 组件增加 destroy-on-close 属性解决了这个问题。
解决方案:给 el-dialog 组件增加 destroy-on-close 属性

3、el-table 组件导致
el-table-column渲染时报错,若 scope.row.field(field为任意字段值)不存在,对其直接执行 length、toString() 等方法而报错。

<el-table-column label="日期">
	<template v-slot="scope">
		{{ scope.row && dayjs( scope.row.time).format('YYYY-MM-DD') }}
	</template>
</el-table-column>

4、vue版本问题 建议更新至最新版本
或不更新时取不到scope中的row中的值,解决办法如下:

<el-table-column label="日期">
	<template v-slot="{ row }">
		{{ row && row.time ? dayjs(row.time).format('YYYY-MM-DD') : ''}}
	</template>
</el-table-column>
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐