我有一个带有 polymerfire 的聚合物 2.0 Web 应用程序的项目,并使用发布到 firebase 托管
firebase deploy
我有另一个具有云功能的项目,该功能作用于数据库触发器,并使用
firebase deploy --only functions:updateOnChange
我有另一个具有云功能的项目,它是一个快速应用程序,具有路由映射
GET /fns/register
、、POST /fns/register
和PUT /fns/register/confirm
。我已经使用firebase deploy --only functions:register
我已经创建了重写规则,以将路由映射/fns/**
到 firebase.json 文件中我的第一个项目(聚合物项目)中的寄存器云函数。我认为这是当前的 firebase 限制,我们无法管理来自多个项目的重写规则。
以下是我firebase.json
的第一个项目(聚合物项目):
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build/default/public",
"rewrites": [
{
"source": "/fns/**",
"function": "fns"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
现在我的请求/fns/register
被路由到我的register
云功能,但res.sendFile
我在应用程序中写的不起作用。它总是说
TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (/user_code/node_modules/express/lib/response.js:410:11)
at app.get (/user_code/index.js:28:13)
at Layer.handle [as handle_request] (/user_code/node_modules/express/lib/router/layer.js:95:5)
at next (/user_code/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/user_code/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/user_code/node_modules/express/lib/router/layer.js:95:5)
at /user_code/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/user_code/node_modules/express/lib/router/index.js:335:12)
at next (/user_code/node_modules/express/lib/router/index.js:275:10)
at expressInit (/user_code/node_modules/express/lib/middleware/init.js:40:5)
我在代码中的日志语句不起作用,即使我发送简单res.send(JSON.stringify({ a: 1 }, null, 3));
,它仍然会引发相同的上述错误。
这意味着,我的代码没有被执行,或者我的库没有被上传到我的云函数。我想了解云功能与应用程序的部署范围/架构/依赖关系。
在 Google IO 2017 中,反复的建议是使用微服务风格的应用程序开发,而不是单一的单体。我在这里关注的是微服务开发风格,但无处可去!
请在这里帮助我。