基本Firebase函数运行时出现错误“ ReferenceError:未定义请求”

时间:2019-05-11 09:43:21

标签: node.js firebase firebase-realtime-database google-cloud-functions

每当触发针对我的Firebase DB的onWrite()时,尝试将Webhook发送给Slack。在其他一些帖子/指南中,我能够部署以下代码,但是在执行时遇到ReferenceError: Request is not defined错误。我不知道如何解决未定义的请求。

const functions = require('firebase-functions');
const webhookURL = "https://hooks.slack.com/services/string/string";

exports.firstTest = functions.database.ref('first').onWrite( event => {
  return request.post(
    webhookURL,
    {json: {text: "Hello"}}
  );
});

1 个答案:

答案 0 :(得分:1)

通过URL调用您的Cloud Function并发送回响应

通过执行exports.firstTest = functions.database.ref('first').onWrite(),您可以在实时数据库中创建,更新或删除数据时触发firstTest云功能。它称为后台触发器,请参见https://firebase.google.com/docs/functions/database-events?authuser=0

使用此触发器,所有操作在后端发生,并且您无权访问Request(或Response)对象。 Cloud Function没有任何前端概念:例如,它可以由另一个写入数据库的后端进程触发。如果要在前端检测Cloud Function的结果(例如,创建新节点),则必须设置一个侦听器以侦听此新节点的位置。


如果您想通过HTTP请求调用功能(可能是从前端或其他“ API使用者”调用)并收到对HTTP请求的响应,则需要使用另一种类型的Cloud Function, HTTP Cloud Function ,请参见https://firebase.google.com/docs/functions/http-events。另请参见您可以直接调用的另一种Cloud Function:Callable Cloud Functions


最后,请注意:



从您的Cloud Function调用一个外部URL

如果要从Cloud Function调用外部URL(例如,问题中提到的Slack Webhook),则需要使用request-promisehttps://github.com/request/request-promise)之类的库。 / p>

有关示例,请参见How to fetch a URL with Google Cloud functions? request?Google Cloud functions call URL hosted on Google App Engine

重要:请注意,您需要加入“火焰”或“烈火”定价计划。

事实上,免费的“ Spark”计划“仅允许对Google拥有的服务进行出站网络请求”。请参见https://firebase.google.com/pricing/(将鼠标悬停在“云函数”标题之后的问号上)