无法部署Python Flask版Firebase云函数,请求返回404
问题排查与解决方案
核心问题
你的代码没有遵循Firebase Python云函数的正确导出规范,导致Firebase部署工具无法识别要部署的函数,最终控制台无函数、请求返回404。
问题分析
- 你直接使用Flask的路由装饰器
@app.get('/test'),但Firebase云函数需要通过firebase_functions.https_fn.on_request来标记可部署的HTTP函数,否则部署流程无法识别要发布的函数。 - 部署日志里的本地服务启动是Firebase的代码预检查流程,但因为没有导出符合要求的函数,检查结束后没有实际打包部署任何云端函数,所以控制台看不到函数。
修正后的代码
from firebase_admin import initialize_app from firebase_functions import https_fn import flask initialize_app() app = flask.Flask(__name__) @app.get('/test') def hello_world(): print('Hello World') return 'Hello, Firebase Cloud Functions with Python' # 关键:将Flask app包装成Firebase HTTP函数并导出 test_fn = https_fn.on_request(app)
额外检查步骤
- 确认你的
firebase.json中(如果存在)的functions配置指向正确的代码文件,例如:{ "functions": { "source": ".", "runtime": "python311" } } - 重新执行部署命令:
firebase -P staging deploy --only functions - 部署完成后,前往Google Cloud控制台的Cloud Functions页面,确认
test_fn函数已存在,对应的端点格式为:https://us-central1-<project-id>.cloudfunctions.net/test_fn(注意函数名是你导出的变量名test_fn,不是Flask路由的/test) - 访问时,完整路径应为:
https://us-central1-<project-id>.cloudfunctions.net/test_fn/test(因为Flask的路由/test挂载在Firebase函数的根路径下)
原理说明
Firebase Python云函数的部署流程依赖于识别被https_fn.on_request(或其他触发器装饰器)标记并导出的函数。直接使用Flask路由时,Firebase无法感知到这是一个需要部署的云服务,因此不会生成对应的云端资源。
内容的提问来源于stack exchange,提问作者MattJ
相关产品推荐
相关产品推荐

