0

我正在尝试在我的 index.js 中调试云函数。它看起来像这样:

exports.minutely_tick =
  functions.pubsub.topic('minutely-tick').onPublish((event) => {
    console.log('This job runs every minute');
    getData("myParameter")
    .then((data) => {
        return console.log('Data is ', data);
      })
      .catch((error) => {
        return console.log('Error is: ', error);
      });
  });

我已经启动了 Cloud Functions Emulator,它成功地准备了模拟函数。

..但是当我在 Cloud Function Emulator 中执行 minutely_tick 时,如下所示:

firebase > minutely_tick

终端仅响应:

[Function: bound ]

为什么我没有从我的云函数中获取 console.logs,就像我通常在函数在生产环境中运行时那样?

4

1 回答 1

1

您在模拟器中输入的命令不正确。您正在做的是有效地告诉模拟器(它只是一个节点 REPL)打印标识符的内容,minutely_tick这只是一个函数的名称。要执行该函数,您必须使用它将接收的参数实际调用它。

根据文档

对于 PubSub 函数,将消息负载插入 Buffer 实例并添加可选的数据属性,如下所示:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

在您的情况下,您将使用名为的函数并将minutely_tick您打算测试的有效负载传递给它。

于 2018-05-31T16:31:52.980 回答