公式ドキュメントにある通りにやれば問題ないんですが、どうやればいいのかいまいち具体的にピンとこなかったので書き残しておきます。
(particles.jsを使うのにめっちゃ手間取った。)
if (process.client) {
require('external_library')
}
window または document が undefined - NuxtJS
VueのSFCにおいて、具体的にはこんな感じ。
importしたライブラリでエラーとなった場合
import 'external_library'
として読み込むのではなく、こうする。
<template>
<div>hoge</div>
</template>
<script>
// requireで読み込む
if (process.browser) {
require('external_library')
}
export default {
// hoge
}
</script>
メソッドなどでwindowを呼び出そうとした場合
mountedで使う場合は意識しなくても使えるはず。
<template>
<div>hoge</div>
</template>
<script>
// こうとか
if (process.browser) {
// ここに window とか document を使った処理
}
export default {
// 作成時に使いたかったらこうとか
created() {
if (process.browser){
// ここに window とか document を使った処理
}
},
// DOM生成し終わってから使いたかったらこう
mounted() {
// ここに window とか document を使った処理
}
}
</script>