В моем проекте Nuxt.js я установил пакет vue2-editor, чтобы иметь возможность писать статьи с помощью HTML. Когда я захожу на страницу, пишу что-то и нажимаю кнопку, все работает правильно, но когда я перезагружаю страницу, я получаю ошибку document is not defined.

Вот код:

<template>
  <div>
    <SideBar />
    <div class='content'>
      <h1>Write article</h1>
      <client-only>
        <VueEditor
          v-model='articleContent'
        />
      </client-only>
      <div style='margin-top: 15px'><button @click='postArticle'>Post article</button></div>
    </div>
  </div>
</template>

<script>
import { VueEditor } from 'vue2-editor';
import SideBar from '../components/SideBar';
export default {
  name: 'Articles',
  components: {
    SideBar,
    VueEditor
  },
  data() {
    return {
      articleContent: null,
    }
  },
  methods: {
    postArticle() {
      console.log(this.articleContent)
    },
  },
}
</script>

И ошибка выглядит так:

enter image description here

Также в документации я обнаружил, что для проектов Nuxt.js vue2-editor нужно добавить в modules, и я сделал это, но это все еще не работает:

  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
    'vue2-editor/nuxt'
  ],
-1
dokichan 10 Окт 2021 в 13:27

1 ответ

Лучший ответ

Вы можете попробовать загрузить его динамически:

<template>
  <div>
    <SideBar />
    <div class='content'>
      <h1>Write article</h1>
      <client-only>
        <VueEditor
          v-model='articleContent'
        />
      </client-only>
      <div style='margin-top: 15px'><button @click='postArticle'>Post article</button></div>
    </div>
  </div>
</template>

<script>
import SideBar from '../components/SideBar';
export default {
  name: 'Articles',
  components: {
    SideBar,
    VueEditor: () => process.client ? (await import("vue2-editor")).VueEditor : ""
  },
  data() {
    return {
      articleContent: null,
    }
  },
  methods: {
    postArticle() {
      console.log(this.articleContent)
    },
  },
}
</script>
1
Ifaruki 10 Окт 2021 в 12:34