首页 > 解决方案 > [Vue 警告]:beforeCreate 钩子中的错误:“ReferenceError:文档未定义”

问题描述

这可能是一个很长的镜头,但我无法弄清楚出了什么问题。希望有人能给我一些指导。

我在我的 Nuxt 项目中使用 vue 快速编辑插件: https ://github.com/A1rPun/vue-quick-edit。

有时我会弹出错误:

[Vue 警告]:beforeCreate 钩子中的错误:“ReferenceError:文档未定义”

这似乎只在我第一次加载页面时发生(未经证实!),之后它再也不会发生(使用 ctrl+F5,以隐身方式加载,在另一个浏览器中尝试,......),它永远不会再次显示并且图书馆工作完美。

但是,这让我对使用该库犹豫不决,因为我不确定错误来自哪里以及它是否会影响我的最终用户。

这是我为使用内联可编辑字段而创建的组件:

<template>
  <quick-edit
    :aria-label="label"
    @input="updateValue"
  />
</template>

<script>
import QuickEdit from 'vue-quick-edit'

export default {
  components: { QuickEdit },
  props: {
    label: {
      type: String,
      required: true,
    },
  },
  methods: {
    updateValue (event) {
      // do something
    },
  },
}
</script>

<style lang="scss" scoped>

</style>

标签: javascriptvue.jsnuxt.jsdocument

解决方案


当 Nuxt 在服务器端渲染页面时组件尝试访问 DOM,解决方案是将其包装在client-only

<template>
  <client-only>
     <quick-edit
       :aria-label="label"
       @input="updateValue"
     />
  </client-only>
</template>

推荐阅读