在将项目从 vue2 转为 vue3 后,出现了一些超预期的错误。比如如下这个:
image.png这报错看上去直接上升到了 vue 源码的高度,有点吓人。然后去网络上搜索了关键字
TypeError: Cannot read properties of null (reading 'emitsOptions')
看到 https://blog.csdn.net/weixin_42151366/article/details/124829423 这篇文章,说是有对象类型错误,于是就往这方面去查。
结果刚巧在生产环境的 vconsole 里面也看到报错。但是它的报错更加明确,指向了一个函数:
const value = this.footer[itemIndex].value
调试后发现这个 this.footer[itemIndex]
会出现 undefined 的情况。最终写个 if else 解决了。
感觉 vue3+vite 在开发的时候定位问题有点麻烦,居然不显示出问题的位置。所幸是解决了。
解决方案
可以通过 vue 的 errorCaptured 来定位问题所在位置:
export default {
name: 'app',
errorCaptured(message) {
console.error('vue component error', message)
},
}
错误信息
如此就可以找到问题所在了。
网友评论