Firebase
Firebase App Hosting(推荐)
项目设置
- 转到 Firebase 控制台并设置一个新项目。
- 从侧边栏选择 Build > App Hosting。
- 您可能需要在此步骤升级您的计费计划。
- 点击 Get Started。
- 选择一个区域。
- 导入 GitHub 仓库(您需要链接您的 GitHub 账户)。
- 配置部署设置(项目根目录和分支),并启用自动推出。
- 为您的后端选择一个唯一的 ID。
- 点击 Finish & Deploy 创建您的第一次推出。
当您使用 Firebase App Hosting 部署时,App Hosting 预设将在构建时自动运行。
Firebase Functions(已弃用)
要使用较新且推荐的 Firebase 函数生成,请将 firebase.gen 选项设置为 2:
export default defineNuxtConfig({
nitro: {
firebase: {
gen: 2
}
}
})
NITRO_FIREBASE_GEN=2 环境变量。如果您已经有网站的部署版本并想升级到第二代,请参阅 Firebase 文档中的迁移过程。具体来说,CLI 会要求您在部署新函数之前删除现有函数。
项目设置
您可能更喜欢使用 Firebase CLI 设置项目,它将为您获取项目 ID,添加所需的依赖项(见上文),甚至通过 GitHub Actions 设置自动部署(仅用于托管)。了解安装 firebase CLI。
- 安装最新版本的 Firebase CLI。
npm install -g firebase-tools@latest
- 初始化您的 Firebase 项目
firebase login
firebase init hosting
.output/public 作为公共目录。在下一步中,不要将您的项目配置为单页应用程序。完成后,将以下内容添加到您的 firebase.json 以在 Cloud Functions 中启用服务器渲染:
{
"functions": { "source": ".output/server" },
"hosting": [
{
"site": "<your_project_id>",
"public": ".output/public",
"cleanUrls": true,
"rewrites": [{ "source": "**", "function": "server" }]
}
]
}
本地预览
如果您需要在不部署的情况下测试某些内容,可以预览站点的本地版本。
npm run build -- --preset=firebase
firebase emulators:start
构建和部署
通过运行 Nuxt 构建,然后运行 firebase deploy 命令来部署到 Firebase 托管。
npm run build -- --preset=firebase
firebase deploy
选项
您可以在 nuxt.config.ts 文件中为 Firebase 函数设置选项:
export default defineNuxtConfig({
nitro: {
firebase: {
gen: 2,
httpsOptions: {
region: 'europe-west1',
maxInstances: 3,
},
},
},
});
运行时 Node.js 版本
您可以在配置中设置自定义 Node.js 版本:
export default defineNuxtConfig({
nitro: {
firebase: {
nodeVersion: '18' // 可以是 '16' 或 '18' 或 '20'
},
},
});
Firebase 工具使用 package.json 中的 engines.node 版本来确定为您的函数使用哪个 node 版本。Nuxt 会自动使用配置的 Node.js 版本写入到 .output/server/package.json。
您可能还需要将 runtime 键添加到您的 firebase.json 文件中:
{
"functions": {
"source": ".output/server",
"runtime": "nodejs20"
}
}
其他 Cloud Functions
您可能会收到警告,当您部署 Nuxt 项目时,其他云函数将被删除。这是因为 Nitro 将将您的整个项目部署到 firebase 函数。如果您只想部署您的 Nuxt 项目,可以使用 --only 标志:
firebase deploy --only functions:server,hosting
在生产环境中使用 Cookie
当将 Firebase 托管与 Cloud Functions 或 Cloud Run 一起使用时,cookie 通常会从传入请求中剥离,以实现高效的 CDN 缓存行为。只有特殊命名的 __session cookie 才允许通过到您的应用程序。
使用环境变量
要为您的 Firebase 函数设置环境变量,您需要将 .env 文件复制到 .output/server 目录。
您可以通过在 package.json 中添加 postbuild 脚本来实现,该脚本将在构建命令后自动运行:
{
"scripts": {
"postbuild": "cp .env .output/server/.env"
}
}