具有 Express 的 Firebase 函数无法解码参数 %CO



在使用app.listen(8080)时,可以在不使用Firebase的情况下解决此错误,但是在云函数中使用exports.app = functions.https.onRequest(app)

这是一个简单的复制代码

const app = express();
app.get('**', (req, res) => res.send('working'));
app.use((err, req, res, next) => res.redirect('/404'));
exports.app = functions.https.onRequest(app) // doesnt work
// app.listen(5000) // works

您如何在Firebase函数中捕获此错误?我希望重定向工作。

火力基础测试:firebase serve --only functions

快递服务:node index.js

要测试的网址:http://localhost:5000/%CO

请注意,附加%CO是无法通过快递解码的。使用快捷方法投放时会发现此错误,但使用 Firebase 函数方法时不会发现此错误。

由于这似乎是一个错误,我还在 github 上创建了一个问题,以防我找不到解决方法。

尝试更改app的名称exports.

exports.newApp = functions.https.onRequest(app) 

根据文档,将 Express 应用与 Firebase Functions 结合使用的正确方法是将应用传递给如下函数:

// Expose Express API as a single Cloud Function:
exports.app = functions.https.onRequest(app);

通过 Firebase Functions 运行时,侦听请求的端口不适用。至于如何在将应用程序传递给函数时捕获错误,其完成方式与您引用的问题相同。您可以在使用云函数时使用 Express 中间件来捕获错误。

此外,本相关问题还介绍了使用 Firebase 函数实现重定向,该问题利用文档来配置如何通过修改firebase.json文件进行重定向。

最新更新