本地Firebase函数上的Express应用程序



我使用Firebase函数创建了一个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是emtpy,但当我向http://localhost:5001/PROJECT_NAME_HERE/us-central1/app/create-url发出请求时(我已经隐藏了项目名称(,它可以正常工作。我正在使用Postman进行请求,但它也不适用于我的前端代码:(。如果我部署到Hosting and Functions并通过web.app域访问该应用程序,它就可以工作了。我正在运行firebase emulators:start以在本地运行。

提前感谢您的帮助!

查看此页面的底部https://firebase.google.com/docs/emulator-suite/install_and_configure.'生成身份验证令牌(仅限宿主模拟器('。

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

如果有帮助,请告诉我!

相关内容

  • 没有找到相关文章

最新更新