本地 Firebase 上的 Express 应用程序功能

Express app on Firebase Functions locally

我使用 Firebase Functions 创建了一个 Express 应用程序,并将文件托管在 Firebase Hosting 上。

index.js(Firebase 函数):

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const parse = require('body-parser');
const cors = require('cors');

admin.initializeApp();

const app = express();

app.use(cors({ origin: true }));
app.use(parse.json());
app.use(parse.urlencoded({ extended: false }));

app.post('/create-url', (req, res) => {
    console.log(req.body);
    res.send(req.body);
});

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

firebase.json:

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  },
  "emulators": {
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080
    },
    "hosting": {
      "port": 5000
    },
    "ui": {
      "enabled": true,
      "port": 4000
    }
  }
}

当我向 http://localhost:5000/create-url 发出 HTTP 请求时,req.body 是空的,但是当我向 http://localhost:5001/PROJECT_NAME_HERE/us-central1/app/create-url 发出请求时(我隐藏了项目名称),它有效适当地。我正在使用 Postman 发出请求,但它也不适用于我的前端代码 :(。如果我部署到 Hosting and Functions 并通过 web.app 域访问该应用程序,它就可以工作。我'm 运行宁 firebase emulators:start 到 运行 本地。

在此先感谢您的帮助!

查看此页面的底部 https://firebase.google.com/docs/emulator-suite/install_and_configure。 'Generate an auth token (Hosting emulator only)'.

基本上您必须生成一个授权令牌并将其作为标志传递到您的构建脚本中或将其添加到您的 ci 环境变量中。

如果有帮助请告诉我!