在写Vue或者Nuxt项目时,我们可能会遇到以下报错

TypeError: Cannot read properties of null (reading ‘insertBefore’)

从报错上看,看不到太多的信息与提示,因此对于第一次遇到这种报错的人,往往不知道从何下手去修复报错。下面,我们根据实践经验总结了几条方法,帮助你排查报错原因:

  1. v-if都改成v-show , 或者将所有v-if, v-else都改成v-show。有时候,之所以会报错,就是因为你使用了v-if 或者使用了v-ifv-else

  2. 如果你使用了katexauto-render自动渲染页面的数学公式。那么报错很可能就是因为你设置的自动渲染功能,其实就是因为你完全按照官网的方式设置导致的[doge]。你可以尝试将katex换成mathjax来渲染数学公式,或者修改你katex的自动渲染设置,将自动渲染函数里面的document.body改为特定的渲染区域document.getElementById(Id)

<script>
    var node = document.getElementById(Id)
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(node, {
          // customised options
          // • auto-render specific keys, e.g.:
          delimiters: [
              {left: '$$', right: '$$', display: true},
              {left: '$', right: '$', display: false},
              {left: '\\(', right: '\\)', display: false},
              {left: '\\[', right: '\\]', display: true}
          ],
          // • rendering keys, e.g.:
          throwOnError : false
        });
    });
</script>

如果你渲染整个document.body,那么有可能把正常的代码也给渲染成数学公式了,结果就出现了insertBefore的报错。

  1. 更换你的Dialog组件,在Nuxt 3报错TypeError: Cannot read properties of null (reading ‘shapeFlag‘)中,shapeFlag报错也是因为Dialog组件。不过,insertBefore报错的解决办法倒比shapeFlag容易些。如果你使用了服务端渲染,如Nuxt.js,那么insertBefore的报错可能源于你UI库使用的Dialog组件。以下以Nuxt.js为例说明,你可以尝试在Dialog组件上套一层ClientOnly
<ClientOnly>
    <Dialog>
    </Dialog>
</ClientOnly>

或者直接更换UI库。

总结一下,是否有感觉Vue或者Nuxt中有不少报错,是源于v-ifDialog,具体原因可能涉及Vue或Nuxt的底层原理。

原文地址: Vue - TypeError: Cannot read properties of null (reading ‘insertBefore’)
更多Vue相关文章Vue.js - 弦圈
其他趣味文章:弦圈- 找到属于你的圈子
更多圈子圈子 - 弦圈

GitHub 加速计划 / vu / vue
109
19
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079 [skip ci] 1 年前
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐