我对NodeJ和Firebase很陌生。当前,我有一个具有Express和以下文件结构的NodeJs项目:
` + /root
+ /db
- user.js
+ /domain
- user.js
+ /node_modules
- ...
+ /routes
- routes.js
- sever.js
- config.json`
我想在Firebase上托管它,但它为我添加了文件index.html和其他文件。如果我尝试使用Cloud函数,它将添加我/ 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);
还有我的route.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提供--only功能
工作完美,但问题出在我尝试部署的地方 有想法吗?
答案 0 :(得分:3)
有一些利基案例可以做到这一点。只要您必须执行此操作,便可以。记录在Serve Dynamic Content with Cloud Functions。
基本上,您可以通过firebase.json在Firebase Hosting中配置重定向。如下所示:
return fetch(URL_LOCAL + `/addLike`, {
method: 'post',
body: JSON.stringify({a: 1})
})
.then(response => Promise.resolve(response.json()))
.catch(err => {
return Promise.reject(err);
})
然后,您在Firebase Functions中配置"rewrites": [ {
"source": "/myapi", "function": "myapi"
} ],
文件以在该路径上侦听HTTP请求,例如:
index.js