req.body是onRequest firebase云函数(With-multer)中的空原型



在我的云函数中:

const app = express();
app.use(multer().array());
app.post("/", (req, res) => {
console.log("hit", req.body.from);
console.log("hit", req.body.from);
return res.sendStatus(200);
});
const emailInboundWebhook = functions.https.onRequest(app);
module.exports = {
emailInboundWebhook
}

我在日志中得到了这个:

i  functions: Beginning execution of "emailInboundWebhook"
>  hit undefined
>  hit undefined
i  functions: Finished "emailInboundWebhook" in ~1s

但当同一个端点用作express应用程序时(在云功能之外(:

const express = require("express");
const app = express();
const multer = require('multer');
app.get("/", async (req, res) => {
res.status(200).json({foo: "Bar"});
})
app.use(multer().array());
app.post("/webhook", async (req, res) => {
console.log("hit",req.body.to);
console.log("hit",req.body.from);
res.sendStatus(200);
});
app.listen(80, () => {
console.log("App listening on 80");
})

给出:

hit a@some-email-inbound.some.url
hit Rahul Priyadarsi <myemailid@gmail.com>

这两个结果是针对发送的同一封电子邮件的,这些函数被触发为sendgrid webhook,它发送multipart/form-dataPOST请求,其中包含从myemailid@gmail.com发送到a@some-email-inbound.some.url的电子邮件的详细信息

我不知道为什么这两个结果不同(我正在通过ngrok测试它们,由于控制台日志行运行,很明显函数被击中了(。

我也遇到了同样的问题。看看本期:https://github.com/expressjs/multer/issues/572

从Multer切换到Busboy也是一个不错的选择。

有一点:在这种情况下,请使用https。请求(来自云功能(,而不是来自express的请求。

相关内容

  • 没有找到相关文章

最新更新