代码之家  ›  专栏  ›  技术社区  ›  Chadd Yasin Özcan

Express routes和具有Firebase云功能的中间件

  •  1
  • Chadd Yasin Özcan  · 技术社区  · 7 年前

    如何在Firebase云函数中使用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! 在日志里。我也该看看吗 “你好,来自Firebase的Express!” ?

    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 ,但没有一个代码示例对我有效。我得到我得到一个 一个接一个。

    Express文档 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....

    app.use() app.get()

    1 回复  |  直到 7 年前
        1
  •  2
  •   Chadd Yasin Özcan    7 年前

    我犯了一个简单的错误 /api 作为一个函数,当它实际上是路径的一部分时。

    通过将此URL与尾部 /

    https://us-central1-myapp.cloudfunctions.net/api/