質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2417閲覧

Nuxt.jsでSwiperを使用するとエラーがでます。

ttkun

総合スコア30

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/02/11 23:36

Nuxt.jsでSwiperを使用するとエラーがでます。
環境は以下です

OS: mac node: v12.14.0 yarn: 1.21.1 vue: @vue/cli 4.1.2 mode: 'universal'

Nuxtにvue-awesome-swiperをインストールし

yarn add vue-awesome-swiper

pluginsフォルダに追加

import Vue from 'vue' import VueAwesomeSwiper from 'vue-awesome-swiper' Vue.use(VueAwesomeSwiper)

nuxt.config.jsに追記

module.exports = { css: [ 'swiper/dist/css/swiper.css' ], plugins: [ { src: '~plugins/vue-awesome-swiper', ssr: false } ], build: { vendor: [ 'vue-awesome-swiper' ] } }

下記のようにマークアップします。

index.vue

1<template> 2 <div> 3 <swiper> 4 <swiper-slide>スライド1</swiper-slide> 5 <swiper-slide>スライド2</swiper-slide> 6 <swiper-slide>スライド3</swiper-slide> 7 </swiper> 8 </div> 9</template>

すると

ReferenceError: window is not defined <swiper> ReferenceError: window is not defined <swiper-slide>

のエラーがでてきます。
ここまでは下記のURLを参考にしました。
https://qiita.com/whike_chan/items/c68e094f412b04b1afc2

原因がわからず下記のように
https://qiita.com/sauzar18/items/81ccfdb48c5e583ad027

マークアップを<swiper>ではなく普通のHTMLにswiperのクラスを追加するとうまくいきました。

<div v-swiper:mySwiper="swiperOption" class="swiper-container" > <ul class="swiper-wrapper"> <li class="swiper-slide">slide1</li> <li class="swiper-slide">slide2</li> <li class="swiper-slide">slide3</li> <li class="swiper-slide">slide4</li> <li class="swiper-slide">slide5</li> <li class="swiper-slide">slide6</li> </ul> <button class="swiper-button-prev" type="button" > 前へ </button> <button class="swiper-button-next" type="button" > 次へ </button> </div>

こちらのほうで問題なくうごくのですが
<swiper><swiper-slide>でうごかない原因がよくわかりません。

なにか追加しないといけない設定などあるのでしょうか?

※追加しておいたほうがいい環境がありましたら追加します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Swiperがサーバーサイドで動いていませんか?
windowオブジェクトがないというエラーですのでフロントで動くように記述されてはどうでしょうか。

html

1<client-only> 2 <swiper> 3 <swiper-slide>slide</swiper-slide> 4 </swiper> 5</<client-only> 6

※Nuxt のバージョンがv2.9.0未満の場合、<client-only>のかわりに<no-ssr>を使用してください。

投稿2020/02/12 01:18

nt4c

総合スコア768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttkun

2020/02/13 06:41

サーバーサイドで動いていました。 <client-only>で正常に動きました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問