如何在Firebase Cloud Functions中使用Express?
我希望使用已设置的两个URL在控制台日志中看到"Hello from Express on Firebase!"
。
为什么?我的理解是,"*"
表示所有请求的路线都应response.send("Hello from Express on Firebase!");
app.get("*", (_request, response) => {
response.send("Hello from Express on Firebase!");
});
使用时,https://us-central1-myapp.cloudfunctions.net/helloWorld
在日志中得到了预期的Hello from Firebase!
。我还应该看到"Hello from Express on Firebase!"
吗?
使用https://us-central1-myapp.cloudfunctions.net/api
时,我会得到404 error
URL
https://us-central1-myapp.cloudfunctions.net/api
是问题所在。在下面的答案中查看原因。
// Express
import express = require("express");
const app = express();
const cors = require("cors")({
origin: "*"
});
app.use("*", cors);
// Firebase Functions SDK
import functions = require("firebase-functions");
app.get("*", (_request, response) => {
response.send("Hello from Express on Firebase!");
});
exports.api = functions.https.onRequest(app);
exports.helloWorld = functions.https.onRequest((_request, response) => {
response.send("Hello from Firebase!");
});
我希望完成的一个示例是here,但是没有一个代码示例对我有用。我得到一个404 error
。
Express Documentation here展示了一个类似的HelloWorld示例,但我混淆了Firebase如何代替app.listen(3000, () => console.log('Example app listening on port 3000!'))
cors
在我的示例代码中工作正常吗?尽管我得到了预期的响应和日志,但Chrome控制台警告:Cross-Origin Read Blocking (CORB) blocked cross-origin response https://appengine.google.com/_ah/lo....
我有一个Slack应用程序正在访问这些URL(我也用chrome访问了它们)。最终,我想在我的Google Cloud Functions中使用Botkit中间件。我尚未掌握Express app.use()
和app.get()
答案 0 :(得分:1)
当/api
实际上是路径的一部分时,我把它当作函数来犯了一个简单的错误。
通过将此URL与结尾/
一起使用
https://us-central1-myapp.cloudfunctions.net/api/
我现在正在使用Express的路线和功能。