( SSR は Firebase Functionsへ。)
npx create-next-app@latest --use-npm <アプリ名>
https://console.firebase.google.com/ からプロジェクトを作成します。プロジェクト名はアプリ名と同じとしておくと良いでしょう。
以下をそれぞれの場所に追記します。
{
"main": "firebaseFunctions.js",
"scripts": {
"serve": "npm run build && firebase emulators:start --only functions,hosting",
"shell": "npm run build && firebase functions:shell",
"deploy": "firebase deploy --only functions,hosting",
"logs": "firebase functions:log"
},
"dependencies": {
"firebase-admin": "^9.4.2",
"firebase-functions": "^3.13.1",
},
"devDependencies": {
"firebase-functions-test": "^0.2.3",
"firebase-tools": "^9.3.0"
}
}
その後にパッケージをインストールします
npm install
vi .firebaserc
{
"projects": {
"default": "<アプリ名>"
}
}
vi firebaseFunctions.js
const { https } = require('firebase-functions')
const { default: next } = require('next')
const nextjsDistDir = './.next/';
const nextjsServer = next({
dev: false,
conf: {
distDir: nextjsDistDir,
},
})
const nextjsHandle = nextjsServer.getRequestHandler()
exports.nextjsFunc = https.onRequest((req, res) => {
return nextjsServer.prepare().then(() => nextjsHandle(req, res))
})
vi firebase.json
{
"hosting": {
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"function": "nextjsFunc"
}
]
},
"functions": {
"source": ".",
"predeploy": [
"npm --prefix \"$PROJECT_DIR\" install",
"npm --prefix \"$PROJECT_DIR\" run build"
],
"runtime": "nodejs16"
},
"emulators": {
"functions": {
"port": 5001
},
"hosting": {
"port": 5002
},
"ui": {
"enabled": true
},
"singleProjectMode": true
}
}
npm run serve
・プランを Blaze にアップグレードする
・Firebase Hosting を開始する
npm run deploy
Project ID が 正しくない可能性があります。以下のコマンドからプロジェクトIDを確認します。
firebase projects:list
プロジェクトIDが間違っている場合は、次のファイル内のプロジェクトIDを正しいものに書き変えます。 .firebaserc