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

Docker部署Nuxt(Vuefire)应用时遇Firebase auth/invalid-api-key错误

排查方向
  • 检查Nuxt环境变量的加载时机与构建方式
    Nuxt的NUXT_PUBLIC_前缀变量默认会在构建时注入代码中,如果你的Dockerfile是在无环境变量的情况下完成构建,运行时传入的变量不会生效——因为构建阶段已经把变量值固化到产物里了。
    解决思路:要么在Docker构建阶段就传入环境变量(比如在npx nuxi build前用ARG和ENV设置变量),要么将变量改为运行时读取(通过useRuntimeConfig()而非直接引用process.env)。

  • 确认Vuefire初始化时的变量获取方式
    不要在Vuefire的初始化代码中直接使用process.env.NUXT_PUBLIC_FIREBASE_API_KEY,改用Nuxt提供的useRuntimeConfig()来获取:

    // 在plugins/vuefire.ts或相关配置文件中
    const config = useRuntimeConfig()
    const firebaseConfig = {
      apiKey: config.public.firebaseApiKey,
      // 其他Firebase配置项
    }
    

    直接用process.env可能在SSR的服务器端上下文里无法正确读取到运行时的环境变量,尤其是当构建阶段没有注入变量时。

  • 验证Dockerfile的多阶段构建逻辑
    如果你的Dockerfile用了多阶段构建(先构建产物再复制到运行镜像),要确保构建阶段能访问到环境变量。示例:

    # 构建阶段
    FROM node:18-alpine as builder
    ARG NUXT_PUBLIC_FIREBASE_API_KEY
    ENV NUXT_PUBLIC_FIREBASE_API_KEY=$NUXT_PUBLIC_FIREBASE_API_KEY
    WORKDIR /app
    COPY . .
    RUN npm install && npx nuxi build
    
    # 运行阶段
    FROM node:18-alpine
    WORKDIR /app
    COPY --from=builder /app/.output ./.output
    ENV NUXT_PUBLIC_FIREBASE_API_KEY=$NUXT_PUBLIC_FIREBASE_API_KEY
    CMD ["node", ".output/server/index.mjs"]
    

    如果构建阶段没有传入变量,产物里的变量会是默认的mock_key,运行时即使传了变量也无法覆盖。

  • 检查Cloud Run的变量传递细节
    虽然本地运行容器时变量正常,但Cloud Run部署时可能存在隐藏问题:

    • 确认变量名完全匹配(Cloud Run环境变量名区分大小写)
    • 如果用Secret Manager挂载变量,检查Secret内容是否正确(有没有多余的换行、空格)
    • 临时修改Cloud Run启动命令为printenv && node .output/server/index.mjs,查看日志确认运行时变量是否真的被容器接收
  • 排查变量值的格式问题
    检查Firebase API密钥是否包含特殊字符(比如+、/、=),这些字符在环境变量传递时可能被意外转义。可以在代码中添加调试日志:

    // 在vuefire初始化前添加(仅调试用,上线前删除)
    const config = useRuntimeConfig()
    console.log('Loaded API Key:', config.public.firebaseApiKey)
    

    查看Cloud Run日志,确认读取到的密钥和实际值完全一致,没有被截断或转义。

  • 验证Nuxt配置的优先级
    检查是否存在环境特定配置文件(比如nuxt.config.prod.ts),这类文件会覆盖nuxt.config.ts的配置。如果生产环境配置里硬编码了错误密钥,或者没有正确引用环境变量,就会导致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:12:34