【问题标题】:Firebase functions return 404Firebase 函数返回 404
【发布时间】:2020-11-19 17:09:48
【问题描述】:

我正在尝试为 firebase 功能设置自定义域。 自定义域已经过验证并且工作正常。 我的firebase函数在us-central1下运行:

这是我的login 函数代码:

const functions = require("firebase-functions");
const express = require(`express`);
const cors = require(`cors`);
const admin = require(`firebase-admin`);
admin.initializeApp();

const firestore = admin.firestore();
const appLogin = express();
appLogin.use(cors({origin:true}));

appLogin.post("/", async(req:Request, res:Response)=>{
    functions.logger.log(`received`);
    const body = req.body;
    functions.logger.log(body);
    const result = await firestore.collection(DbCollections.USER).add(body);
    return res.status(201).send(JSON.stringify({"user_id":result.id}));
}); 


exports.login = functions.https.onRequest(appLogin);

没什么特别的...

所以,当我在邮递员中使用屏幕截图中的 url 时 - 它工作正常。 但我想像下一个这样使用自定义域:

https://mydomai.com/api/login

这是我的firebase.json 托管部分:

  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "/api/login",
        "function": "login"
      }
    ]
  }

但是,当我尝试使用自定义域访问 login 时,它会返回 404,而没有任何有价值的错误消息:

有什么想法吗?

【问题讨论】:

    标签: firebase google-cloud-functions firebase-hosting


    【解决方案1】:

    重写的 source 不会从函数调用中的 URL 中删除,因此您可能希望将 appLogin.post("/", ...) 更改为 appLogin.post("/api/login/", ...)

    【讨论】:

    • 谢谢,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2018-08-04
    • 1970-01-01
    • 2020-06-03
    • 2021-08-17
    • 1970-01-01
    • 2020-12-07
    • 2015-11-10
    相关资源
    最近更新 更多