Javascript 自定义域Firebase CloudFunctions API

Javascript 自定义域Firebase CloudFunctions API,javascript,firebase,google-cloud-platform,google-cloud-functions,firebase-hosting,Javascript,Firebase,Google Cloud Platform,Google Cloud Functions,Firebase Hosting,我已经有了一个使用Firebase云函数的Express API,但我需要向其中添加自定义域。我随后使用Firebase主机为云函数创建了一个自定义域,并最终得到了以下Firebase.json { "functions": { "predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint", "npm --prefix

我已经有了一个使用Firebase云函数的Express API,但我需要向其中添加自定义域。我随后使用Firebase主机为云函数创建了一个自定义域,并最终得到了以下
Firebase.json

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "functions"
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "emulators": {
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080
    },
    "ui": {
      "enabled": false
    }
  },
  "hosting": [{
    "site": "devbp",
    "target:":"devbp",
    "public": "public",
    "rewrites": [
      {
        "source": "/api/**",
        "function": "api"
      }
    ]
  }]
}
索引

导出-converter.ts

app.ts

问题是api内的端点不可访问,例如,
GET devbp.web.app/api/user?id=123
,返回
Cannot GET/api/user
。此响应表示Express正在处理请求(如果没有,则主机将抛出404页),但不是预期的

我相信我的
firebase.json
中缺少了一些东西,因为如上所述,相同的api目前正在生产中

有什么想法吗?

根据(以及)托管语法是:

"hosting": {
...
}
在显示的
firebase.json
中,您有
[{…}]

尝试删除方括号。

我不确定是否遵循了逻辑,但是我在代码中的任何地方都看不到任何
新应用程序。如果我理解正确,如果您不创建新的
应用程序
对象,您将不会运行它的构造函数,因此不会创建express应用程序

我认为的第二件事:)是,同样根据我的理解,当http GET requst调用GET请求时,应该调用方法


我发现这不是云函数,但是逻辑是相似的。创建了新的实例应用程序,并调用了get方法。

请编辑问题,同时显示未按预期方式运行的功能代码。“我们应该有足够的信息来复制您所观察到的内容。”DougStevenson补充了一些文件,如果您需要其他信息,请告诉我。谢谢,我看不出您在哪里定义了应该按照预期处理请求的快速路线。我强烈建议将其归结为,删除尽可能多的不必要的代码。
import * as express from "express";
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";

export { express, functions, admin };
import * as cors from "cors";
import * as bodyParser from "body-parser";
import Routes from "./routes";
import { express } from "../../utils/exports-converter";

class App {
  public express: express.Application;
  constructor() {
    this.express = express();
    this.init();
    this.mountRoutes();
  }
  private init() {
    const corsOptions = { origin: true };
    this.express.use(cors(corsOptions));
    this.express.use(bodyParser.raw());
    this.express.use(bodyParser.json());
    this.express.use(bodyParser.urlencoded({ extended: true }));
  }
  private mountRoutes() {
    Routes.mount(this.express);
  }
}
"hosting": {
...
}