Heroku 找不到 Firebase 数据库网址



我使用Heroku作为服务器与Firebase实时数据库。

下面的代码可以在我的计算机上运行,但不能在Heroku上运行。

...
cred = credentials.Certificate(JSON)
firebase_admin.initialize_app(cred, {
'databaseURL': os.environ["databaseURL"]
})

Heroku区域为美国,firebase数据库区域为东亚。这里发生了什么?谢谢。

日志

2022-06-29T10:11:14.791190+00:00 app[scheduler.6175]: Traceback (most recent call last):
2022-06-29T10:11:14.791219+00:00 app[scheduler.6175]:   File "/app/notice_bot.py", line 137, in <module>
2022-06-29T10:11:14.791342+00:00 app[scheduler.6175]:     runBot()
2022-06-29T10:11:14.791351+00:00 app[scheduler.6175]:   File "/app/notice_bot.py", line 119, in runBot
2022-06-29T10:11:14.791436+00:00 app[scheduler.6175]:     previousNoticeIds = importPreviousNoticeIds()
2022-06-29T10:11:14.791439+00:00 app[scheduler.6175]:   File "/app/notice_bot.py", line 67, in importPreviousNoticeIds
2022-06-29T10:11:14.791500+00:00 app[scheduler.6175]:     dir = db.reference().child(NOTICE_IDS_DB_PATH)
2022-06-29T10:11:14.791509+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/db.py", line 69, in reference
2022-06-29T10:11:14.791589+00:00 app[scheduler.6175]:     service = _utils.get_app_service(app, _DB_ATTRIBUTE, _DatabaseService)
2022-06-29T10:11:14.791599+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/_utils.py", line 101, in get_app_service
2022-06-29T10:11:14.791664+00:00 app[scheduler.6175]:     return app._get_service(name, initializer) # pylint: disable=protected-access
2022-06-29T10:11:14.791673+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/__init__.py", line 295, in _get_service
2022-06-29T10:11:14.791763+00:00 app[scheduler.6175]:     self._services[name] = initializer(self)
2022-06-29T10:11:14.791771+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/db.py", line 771, in __init__
2022-06-29T10:11:14.791955+00:00 app[scheduler.6175]:     _DatabaseService._parse_db_url(db_url)  # Just for validation.
2022-06-29T10:11:14.791956+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/db.py", line 837, in _parse_db_url
2022-06-29T10:11:14.792133+00:00 app[scheduler.6175]:     return cls._parse_emulator_url(parsed_url)
2022-06-29T10:11:14.792140+00:00 app[scheduler.6175]:   File "/app/.heroku/python/lib/python3.10/site-packages/firebase_admin/db.py", line 863, in _parse_emulator_url
2022-06-29T10:11:14.792330+00:00 app[scheduler.6175]:     raise ValueError(
2022-06-29T10:11:14.792360+00:00 app[scheduler.6175]: ValueError: Invalid database URL: "https://MY_DATABASE_URL.REGION.firebasedatabase.app". Database URL must be a valid URL to a Firebase Realtime Database instance.

通过创建另一个区域设置为美国的项目来解决。我认为https://github.com/firebase/firebase-admin-python/issues/514问题是相关的。