firebase node.js / express.js添加了多个firebase函数

时间:2018-06-14 01:53:48

标签: node.js firebase express google-cloud-functions firebase-cli

我正在尝试在index.ts文件中添加多个firebase函数,如下例所示:How do I structure Cloud Functions for Firebase to deploy multiple functions from multiple files?

特别是,我有一个express.js服务器,我在routes.ts中初始化了:

const server = express();
server.get('/api', (req, res) => res.send('hello /api'))
export {server}

现在在index.ts中,我可以导入routes.ts并附加用户身份验证侦听器,以便在创建新用户时触发,即:

import {server} from './routers'

exports.app = functions.https.onRequest(server);
exports.userEvents = functions.auth.user().onCreate(user => {
    console.log("user created: ", user.email, user)
})

但是,据我所知,只有exports.app实际上正在按预期工作,exports.userEvents似乎不会触发新用户创建。

=============================================== ==========

编辑:

问题在于我firebase.json功能的设置方式,目前只提供app端点为/api/**的端点,即:

{
  "hosting": {
    "public": "public",

    // the problem is here: you're not connecting to multiple functions
    "rewrites": [{
        "source": "/api/**"
      , "function": "app"  



      }],
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

现在的问题是如何告诉firebase提供来自exports.userEvents ...

的功能

1 个答案:

答案 0 :(得分:0)

问题在于我试图模拟本地环境中的功能。我必须部署它们才能运行非http函数。但是,文档底部描述的其他函数有一个本地模拟器:https://firebase.google.com/docs/functions/beta-v1-diff,这是新的。