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

TypeScript开发的Firebase云函数部署后在控制台无法找到

问题描述

我是TypeScript和Firebase云函数的新手,此前成功部署过helloWorld函数。这次编写了调用Secret Manager的getSecret云函数,执行firebase deploy后终端显示部署完成,但Firebase控制台里找不到该函数。

函数代码(index.ts)

import * as functions from "firebase-functions";
import {SecretManagerServiceClient} from "@google-cloud/secret-manager";

const client = new SecretManagerServiceClient();

export const getSecret = functions.region('us-central1').https.onCall(async (data, context) => {

  const [version] = await client.accessSecretVersion({
    name: "projects/project-id/secrets/api/versions/latest",
  });

  const secretValue = version.payload?.data ?? "No found";

  console.log(secretValue);

  return secretValue;
});

部署日志输出

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run build

> build
> tsc

✔  functions: Finished running predeploy script.
i  functions: preparing codebase default for deployment
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
i  artifactregistry: ensuring required API artifactregistry.googleapis.com is enabled...
✔  functions: required API cloudfunctions.googleapis.com is enabled
✔  artifactregistry: required API artifactregistry.googleapis.com is enabled
✔  functions: required API cloudbuild.googleapis.com is enabled
i  functions: Loading and analyzing source code for codebase default to determine what to deploy
Serving at port 8200

shutdown requested via /__/quitquitquit

i  functions: cleaning up build files...

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/project-id/overview
问题排查与解决

从部署日志里的Serving at port 8200和shutdown requested via /__/quitquitquit可以看出,部署流程未正常完成,以下是具体排查方向:

  • 检查TypeScript编译输出
    确认tsconfig.json中的outDir配置是否指向Firebase期望的目录(默认是lib)。手动执行npm run build,查看是否生成了lib/index.js,且文件中包含getSecret函数的导出。如果编译输出路径错误,Firebase CLI找不到可部署的代码,控制台自然不会显示函数。

  • 核对firebase.json配置
    打开项目根目录的firebase.json,确认functions的source路径正确指向你的函数源码目录,codebase配置为default(默认配置)。示例配置:

    {
      "functions": {
        "source": "functions",
        "codebase": "default"
      }
    }
    
  • 终止后台firebase进程
    日志中出现本地服务启动的信息,说明可能有firebase emulators:start或其他调试进程在后台运行,干扰了部署流程。关闭所有相关终端窗口,或用系统任务管理器终止firebase相关进程,再重新执行部署。

  • 强制指定部署目标
    不要使用firebase deploy全量部署,而是明确指定部署该函数:

    firebase deploy --only functions:getSecret
    

    这样能获得更精准的部署反馈,排查是否存在隐藏报错。

  • 验证函数导出正确性
    检查index.ts中的export const getSecret是否未被注释,且编译后的lib/index.js中正确导出了该函数。部分情况下TypeScript编译警告可能导致导出丢失,可查看npm run build的完整输出确认是否有异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:27:57