2017-09-05 6 views
2

Choices.jsをVueコンポーネント内で使用しようとしています。コンポーネントが正常にコンパイルが、その後エラーがトリガされた:私が見るブラウザでNuxt.jsで "ドキュメントが定義されていません"

[vue-router] Failed to resolve async component default: ReferenceError: document is not defined

ReferenceError document is not defined

私は、これはNuxt.jsでSSRとは何かを持っていると思いますか? Choices.jsをクライアント上で実行する必要があるのは、それが私が推測するクライアントのみの側面だからです。古典のVueで

nuxt.config.js

build: { 
    vendor: ['choices.js'] 
} 

AppCountrySelect.vue

<script> 
import Choices from 'choices.js' 

export default { 
    name: 'CountrySelect', 
    created() { 
    console.log(this.$refs, Choices) 
    const choices = new Choices(this.$refs.select) 
    console.log(choices) 
    } 
} 
</script> 

、これは正常に動作しますので、私はまだ非常にグリップを取得していますこのようにNuxt.jsがどのように動作するのですか?

どこが間違っているのでしょうか?

ありがとうございました。あなたはNuxtプロジェクトを開始するとき

答えて

3

それは;-)

一般的なエラーですChoices.js libには、クライアント側のみで利用可能です! Nuxtはサーバー側からレンダリングしようとしましたが、Node.js window.documentからは存在しません。エラーがあります。
nb:window.documentは、ブラウザレンダラーでのみ使用できます。

Nuxt 1.0.0 RC7以降、<no-ssr>要素を使用すると、コンポーネントをクライアント側でのみ使用できます。このためhttps://github.com/nuxt/nuxt.js/blob/dev/examples/no-ssr/pages/index.vue

+0

ありがとう:

<template> <div> <no-ssr placeholder="loading..."> <your-component> </no-ssr> </div> </template> 

はここに公式の例を見てみましょう!どのように私はその後、SSRで要素自体を出力することができますか?で、いくつかのJSは、選択リストのためにクライアント側で行動する必要がありますが、私はまだサーバー上で実際の選択リストをレンダリングしたいと思います。 –

関連する問題