🌐

【Nuxt.js】Nuxt.js SSRモードでfirebaseにデプロイする手順 2020年版

2020/10/18に公開1

概要

自作のNuxt.jsはSSRモードでfirebaseにホスティングしようとネットで方法を探してました。
見つかった記事は2019の物でちょっと古くて(実際その通りやったら詰んでしまう)困ってました。
そこでこの記事この動画を参考になんとかデプロイできました。

でもどれも英語だったのでせっかくなので日本語の記事を書こうと思った次第です。

手順を見たくない方へ

このボイラープレートをそのまま使う。

手順1

新規Nuxtアプリを作成する

npx create-nuxt-app firebase-firebase/src

注意
nuxt本体のソースコードを管理しやすいために/srcの中に入れてますが、そうしなくても良いです。ただ後述のfirebase.jsonのpredeployの設定をご自身のパスに合わせて修正してください。

手順2

まずfirebaseでアカウントを申請し、新規プロジェクトを作成してください。
nodeバージョンを10以上を使うため、プランはblazeにアップグレードしておいてください。(従量課金制なので、テストするだけなら課金されないはずなので安心してください)

次に下記のコマンドでfirebaseの設定ファイルを生成します。

npm install -g firebase-tools //firebase CLIをインストール
firebase init //設定ファイルを作成

設定は画像を参考して選んでください。
functionとhostingを選択

firebaseのプロジェクトを指定する

ホスティングの設定

設定後のフォルダーはこうなります

手順3

cloud functionを作成

SSRモードはnodeサーバーが必要なので、firebaseにcloud functionを入れる必要があります。
やってることはざっくりいうと、ルートにアクセスしたらレスボンスをそのままNuxtにレンダリングさせる。

/functions/index.js
こちらのコードを上記ファイルにコピペ

package.jsonを設定

nuxt-startを追加します。
nodeのバージョンは10以上じゃないといけないので(バージョン8はもうサポート終了しました。)ご注意を。

functions/package.json
こちらのコードを上記ファイルにコピペ

firebase.jsonを設定

ざっくりですが、各設定の説明は下記です。
functions.source: cloud functionにデプロイフォルダーを指定
functions.predeploy: firebase deployする前に、ビルドされたファイルを適宜のパスにコピーする

hosting.public: firebase hostingにデプロイするフォルダーを指定
hosting.predeploy: firebase deployする前に、ビルドされたファイルを適宜のパスにコピーする

rewrites.function: リクエストはすべて指定functionに処理させる。(ここではfunctions/index.jsのssrapp関数)

firebase.json
こちらのコードを上記ファイルにコピペ

手順4

次にnuxt.config.jsonをちょっとした修正が必要です。

手順5

設定は以上です。
あとはルートに戻り下記のコマンドを叩けばデプロイします。

firebase deploy

無事にデプロイできました!

終わりに

ここまでたどり着くため一日以上かかりました...この記事でお役に立てば嬉しい限りです。
日本語は母語ではないので拙い文章でしたが、ここまで見てくれてありがとうございます!

Discussion

全財産イーサリアム全財産イーサリアム

本当に助かりました!!!
ありがとうございました!!
あとすごい日本語上手ですね。外国人だとわかりませんでした!!!