gpt4 book ai didi

javascript - 如何在 firebase 上托管 Nodejs/Express 后端?

转载 作者:行者123 更新时间:2023-12-05 02:15:32 26 4
gpt4 key购买 nike

我是 NodeJs 和 Firebase 的新手。目前,我有一个带有 Express 和以下文件结构的 NodeJs 项目:

` + /root
+ /db
- user.js
+ /domain
- user.js
+ /node_modules
- ...
+ /routes
- routes.js
- sever.js
- config.json`

我想在 Firebase 上托管它,但它给我添加了文件 index.html 和其他文件。如果我尝试使用云函数,它会添加我/functions 并在其中添加一个“index.js”文件,如下所示:

` + /root
+ /db
- user.js
+ /domain
- user.js
+ /functions
- index.js
+ /node_modules
- ...
+ /routes
- routes.js
- sever.js
- config.json
-firebase.json`

我尝试将我的 server.js 代码粘贴到 index.js 中,但我从引用和丢失的包中得到错误。

这是我的 index.js 代码:

const functions = require('firebase-functions');

var express = require('express');
var bodyparser = require('body-parser');

var app = express();

// Use bodyParser to parse the parameters
app.use(bodyparser.urlencoded({extended: true}));
app.use(bodyparser.json({limit: '10mb'}));

// Call the routes
require('../routes/routes')(app);

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

还有我的 routes.js 代码:

var userRoute = require('./users');

//Register routes and link to functions
module.exports = function(app){
app.post('/register', user.userRoute);
}

我的 firebase.json

{
"hosting" : {
"public" : "public",
"rewrites" : [{
"source" : "/",
"function" : "api"
}]
}
}

当我在本地运行时

firebase serve --only functions

工作完美,但问题出在我尝试部署的地方有什么想法吗?

最佳答案

有一些小众案例可以做到这一点。只要你必须这样做,就有可能。它记录在 Serve Dynamic Content with Cloud Functions .

基本上,您可以通过 firebase.json 在 Firebase 托管中配置重定向。如下所示:

"rewrites": [ {
"source": "/myapi", "function": "myapi"
} ],

然后,您在 Firebase Functions 中配置您的 index.js 文件以监听该路径上的 HTTP 请求,例如:

app.get("/myapi", (request, response) => {
response.set("Cache-Control", "public, max-age=300, s-max-age=2629746");
var myparam = request.query.item;
return fetchSomethingFromFirestore(myparam).then((resp) => {
return response.render("template", {
myProperty: resp.valueForPugTemplate
});
});
});

app.use(function(err, req, res, next) {
return errorhandler(err, req, res, next);
});

const myapi = functions.https.onRequest((request, response) => {
if (!request.path) {
request.url = `/${request.url}`;
}
return app(request, response);
});
module.exports = {
myapi,
};

关于javascript - 如何在 firebase 上托管 Nodejs/Express 后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51663114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com