如何使用 nodejs 和 reactjs 设置 firebase 模拟器?

Posted

技术标签:

【中文标题】如何使用 nodejs 和 reactjs 设置 firebase 模拟器?【英文标题】:How to set up firebase emulators using nodejs and reactjs? 【发布时间】:2020-11-26 02:46:18 【问题描述】:

我正在尝试为函数和 firestore 设置 firebase 模拟器。我的文件结构是这样设置的:

functions
---APIs
---util
---.gitignore
---index.js
---package-lock.json
---package.json
views
---public
---src
---.gitignore
---capacitor.config.json
---ionic.config.json
---package-lock.json
---package.json
---tsconfig.json
.firebaserc
.gitignore
firebase.json
firestore.indexes.json
firestore.rules
ionic.config.json
package-lock.json
package.json

视图是我的反应前端代码所在的位置。

我设置了模拟器,当我运行firebase emulators:start 时,它运行模拟器。但在那之后,我不知道如何将它们与 nodejs 和前端连接起来。

这是路径函数/index.js 的 index.js 代码:

const functions = require("firebase-functions");
var bodyParser = require("body-parser");
const app = require("express")();

const auth = require("./util/auth");

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded( extended: false ));

// parse application/json
app.use(bodyParser.json());

/**** route calls were here ****/

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

在functions/util/admin.js中,我有这样的代码:

const admin = require("firebase-admin");

admin.initializeApp();

const db = admin.firestore();

db.settings(
  host: "localhost:8080",
  ssl: false
);

module.exports =  admin, db ;

这是我的一些函数/APIs/users.js 登录等代码:

const  admin, db  = require("../util/admin");
const config = require("../util/config");
const  capitalize_Words  = require("../util/helpers");

const firebase = require("firebase");

firebase.initializeApp(config);

const  validateLoginData, validateSignUpData  = require("../util/validators");

// Login
exports.loginUser = (request, response) => 

/**** rest of code here ****/

如果有人对如何连接模拟器有任何建议,请告诉我。另外,如果有人有更好的建议或需要更多信息,请告诉我。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

没有足够的虚构互联网点来发表评论,所以我把我的想法放在这里。顺便说一句,我没有 Ionic 的背景,所以我可能会遗漏一些东西。

模拟器套件,当激活时,应该在localhost 地址可用(例如localhost:5001,我认为这是默认的)。从那里你应该能够像localhost:5001/example_function那样路由到你的函数。

这应该只用于本地开发。实时部署应用程序时,应将其部署为firebase deploy,并且 url 将根据您的 firebase 项目而更改。在这两种情况下,CLI 都应该编写确切的函数 url

让我知道这是否回答了你的问题,或者我是否离题了!

https://firebase.google.com/docs/emulator-suite/install_and_configure

【讨论】:

如何将前端连接到该本地主机地址?我的问题是我不知道如何更改我的代码以路由到 localhost:5001 而不是生产 url 这有帮助吗? firebase.google.com/docs/emulator-suite/connect_functions TLDR firebase.functions().useFunctionsEmulator("http://localhost:5001")

以上是关于如何使用 nodejs 和 reactjs 设置 firebase 模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

了解 ReactJS 和 NodeJS 应用程序如何工作

前端 (ReactJS) 到后端 (NodeJS) 身份验证

如何使用 ReactJS/NodeJS 一起部署到 Amazon Web Services (AWS)?

如何使用 MongoDB + NodeJS Express 向 ReactJS React Router 和 Redux 添加登录身份验证和会话?

如何在 reactjs 中向 nodejs RESTful API 发出 POST 请求

Nodejs + reactjs + jwt 检查