在使用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
文件进行重定向。