Firebase上有一份有关如何在Node.js中编写和部署云功能的文档,但是任何人都可以帮助我在python中获得该文档。我对这个领域的新手感到困惑吗?
但是,我尝试编写如下所示的云函数,但是不断出现一些我要在下面提及的错误:
import json
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
def go_firebase(request):
cred = credentials.Certificate('firebasesdk.json')
firebase_admin.initialize_app(cred, {
'databaseURL' : 'https://firebaseio.com/'
})
ref=db.reference('agents')
snapshot = ref.order_by_key().get()
for key, val in snapshot.items():
kw=val
dictfilt = lambda x, y: dict([ (i,x[i]) for i in x if i in set(y) ])
wanted_keys = ("address","name","phone","uid")
result = dictfilt(kw, wanted_keys)
data= json.dumps(result, sort_keys=True)
return data
在使用http触发器部署功能后,在日志中说:
severity: "ERROR"
textPayload: "Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 313, in run_http_function
result = _function_handler.invoke_user_function(flask.request)
File "/env/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 215, in invoke_user_function
return call_user_function(request_or_event)
File "/env/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 208, in call_user_function
return self._user_function(request_or_event)
File "/user_code/main.py", line 6, in go_firebase
cred = credentials.Certificate('firebasesdk.json')
File "/env/lib/python3.7/site-packages/firebase_admin/credentials.py", line 83, in __init__
with open(cert) as json_file:
FileNotFoundError: [Errno 2] No such file or directory: 'firebasesdk.json'
我不知道为什么说找不到文件,因为我在执行该功能的路径中有该json文件!我正在使用Google Cloud Shell! 谁能告诉我我要去哪里错了?
答案 0 :(得分:0)
您所引用的.json
文件可能是Node.js Cloud Function的依赖项文件。
工作方式
每个Google Cloud Function都有一个额外的文件(除主代码外),其中包含所有要安装的库。例如,如果您在代码中使用requests
库,则在执行主代码之前无法运行pip install requests
。因此,您将此库添加到其他文件中,Cloud Function将在部署期间首先读取该文件,并尝试安装其中提到的所有库。
对于Node.js代码,带有库的文件是.json
文件。对于Python
,它是一个requirements.txt
文件。有关更多信息,您可以参考The Python Runtime文档。