在 Firebase Functions HTTPS 请求中使用 Express 中间件

Using Express middleware in Firebase Functions HTTPS requests

我在将 Express 中间件与 Firebase 函数结合使用时遇到问题。在这个 example 中,一个函数被挂接到 app() 实例,如下所示:

app.get('*', (req, res) => {
  res.send(`Hello ${req.user.name}`);
});

exports.authorizedHello = functions.https.onRequest(app);

如何使用 express 中间件实现多个功能?

这是我尝试解决它的方法之一,但将端点 returns 称为 404:

app.get('/authorizedHello', (request, response) => {
    response.send(`Hello ${request.user.name}`);
})

app.get('/authorizedBye', (request, response) => {
    response.send(`Bye ${request.user.name}`);
})

exports.authorizedHello = functions.https.onRequest(app);
exports.authorizedBye = functions.https.onRequest(app);

我确定我做错了。你能给我指出正确的方向吗?

考虑到云函数的基本路径使用您的导出名称,因此在这种情况下您的有效 URL 将是:

https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedBye
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedBye

这就是示例使用 get('*', ...) 的原因。您应该会在部署命令执行后看到显示的 URL。

您有四个网址,因为您两次导出同一个 Express 应用程序。

谢谢你的好问题。你的问题是给我一个使用模板引擎的线索。也许我超出了你的问题的主题。但是,如果有人想使用像 Pug 这样的模板引擎,我只想分享。在这里查看我的示例代码。

const functions = require('firebase-functions');
const express = require("express");
const app = express();




app.set("views",__dirname+"/tmp");
app.set("view engine","pug");
app.engine('pug', require('pug').__express);
app.get("/",p3p(p3p.recommended),function(req,res){
   res.render("index");
});
app.get("/login",p3p(p3p.recommended),function(req,res){
   res.render("login");
});
exports.main = functions.https.onRequest(app);

然后您可以像这样访问 link。 https://us-central1-[YOURAPP].cloudfunctions.net/main/ https://us-central1-[YOURAPP].cloudfunctions.net/main/login

抱歉打扰您的问题。但是我不得不在 google 上找到我的问题,就像使用 "How to use template engine to google cloud functions" 我从来没有得到正确的答案。

我很高兴你的问题中有示例代码。这激励我做一些改进。谢谢你 。 抱歉我的英语不好:)