You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase App Hosting部署NextJS15时无法访问GCP Secret Manager密钥

解决Next.js 15 + Firebase App Hosting无法访问GCP Secret Manager环境变量的问题

核心问题分析

你遇到的类型错误本质是process.env.NEXT_PUBLIC_FIREBASE_API_KEY返回了undefined,而SetAuthCookiesOptions要求apiKey为必填字符串类型,导致类型不兼容。关于你疑问的next_public_前缀,本身不会引发部署问题,下面分点给出解决方案:

1. 修复代码类型错误

直接在代码中确保环境变量不为undefined,可选择以下方式:

  • 非空断言(适合确认变量一定会被加载的场景):
    apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY!
    
  • 兜底处理(避免部署时变量缺失导致崩溃):
    apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY ?? (() => {
      throw new Error("NEXT_PUBLIC_FIREBASE_API_KEY环境变量未配置");
    })()
    

2. next_public_前缀兼容性说明

next_public_是Next.js约定的前缀,用于标记客户端可访问的环境变量,Firebase App Hosting完全支持该前缀,部署时不会有问题。只需确保:

  • apphosting.yaml中配置的variable名称与代码引用的完全一致(你当前的配置匹配,无问题)
  • 若不需要客户端访问该变量,可去掉next_public_前缀,仅在服务端使用

3. 验证Firebase配置与授权

  • 确认apphosting.yaml中的secret值与GCP Secret Manager中存储的密钥名称完全匹配(比如配置的secret: API_KEY,需确保Secret Manager存在同名密钥版本)
  • 检查授权是否生效:执行firebase apphosting:secrets:grantaccess后,确认App Hosting服务账号已被授予roles/secretmanager.secretAccessor角色,否则无法读取密钥
  • 可在构建阶段添加日志,确认环境变量是否加载成功:
    // 在next.config.js或启动脚本中添加
    console.log("NEXT_PUBLIC_FIREBASE_API_KEY:", process.env.NEXT_PUBLIC_FIREBASE_API_KEY);
    

4. 额外排查点

  • 若使用Next.js 15 App Router,确保服务端组件/路由处理函数中的环境变量未被客户端代码意外引用(你用了next_public_前缀,客户端访问是允许的)
  • 检查Firebase CLI版本,确保为最新稳定版,避免版本兼容问题

内容的提问来源于stack exchange,提问作者ddongyun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:25:00