# localStorage is not defined に遭遇した時の対応

ReferenceError
localStorage is not defined

spa で作ったプログラムを universal に切り替えて SSR で HP 速く表示することを目指しました。
SPA モードでは問題なく動いていたプログラムが localStorage is not defined エラー
localstorage はブラウザ側しかないのに、サーバーレンダリングされたことが原因 はわかるけど
SPA に切り替えてれば、動くこともわかるけど
SSR 使いたい! SSR 使いたいから SPA からわざわざ切り替えようとしているから

# window document が undefined

これは、サーバーサイドのレンダリングに起因します。 クライアントサイドでのみリソースをインポートしたい時は process.client 変数を使用する必要があります。

process.clientで if 判断

if (process.client) { require('external_library') }

# ssr サポートしていない plugin 使ってないか?

nuxt.config.js チェック

export default {
  plugins: [
    { src: "~/plugins/both-sides.js" },
    { src: "~/plugins/client-only.js", mode: "client" },
    { src: "~/plugins/server-only.js", mode: "server" },
  ],
};

SSR したくないプラグインはmode:'client'追加 (Nuxt.js 2.4 以降)

ssr:false は次のメジャーリリースでは非推奨に

2020-05-22
  • nuxtjs

関連記事

Nuxt.js の config に i18n 書いたら type エラーで怒られた
Nuxtjs 3 に Ant design Vue を使う
Nuxtjs build WARNING in entrypoint size limit
Nuxtjs axios リクエストのヘッダー設定
Nuxtjs titleTemplate の設定
Nuxt.js でフロントエンドのカテゴリ選択
楽天 GOLD に Nuxt で作った HP デプロイ公開した話
web 開発でよく使うリダイレクトと nuxtjs redirect
nuxtjs の wpa を実装した時のメモ
vuejs スクロールでナビバー表示非表示
nuxtjs のページごと head の title description 変更
Nuxtjs に iview 4.0 入れた動かしてみた