firebase函数返回了未定义的预期Promise或Value

时间:2019-01-15 05:43:33

标签: javascript firebase google-cloud-functions

我的代码如下所示。在两种情况下我都返回null时会引发错误。我也应该在函数末尾返回null吗?我担心这会使功能不等待完成

>>> import urllib.request
>>> url = "https://python.org"
>>> http_response = urllib.request.urlopen(url)
>>> url_redirected = http_response.geturl()
>>> print(url_redirected)
https://www.python.org/

1 个答案:

答案 0 :(得分:0)

错误消息是正确的-您没有从函数中返回任何内容,这与返回undefined相同。相反,您要做的是从传递给bwipjs.toBuffer()的函数回调中返回null。该内部函数的返回值不会传播到外部函数。

如果仅从函数的顶层返回null,则可以停止该错误消息,但是代码将无法正常工作。函数返回的值不是promise后,Cloud Functions将关闭该函数内部启动的所有异步工作。它可能似乎什么也不做。

您需要做的是返回一个承诺,当您的函数中的所有异步工作都完成时,该承诺就会解决。现在,这看起来像是对toBuffer()的调用,以及对实时数据库的update()的调用。

您可能会发现函数中的documentation on async programming很有帮助。您可能还想看这个video series on dealing with promises in Cloud Functions