Ste*_*ano 5 firebase firebase-authentication google-cloud-functions
我试图将我的所有功能拆分为多个文件,但是firebase-admin初始化存在问题。我的第一个文件是这样的:
const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
const userHandler = require('./user')
Run Code Online (Sandbox Code Playgroud)
第二个文件user.js
const functions = require('firebase-functions')
const admin = require('firebase-admin')
...
exports.update = (req, res) => {
admin.auth().verifyIdToken(req.body).catch(error => {console.log(error)}
}
Run Code Online (Sandbox Code Playgroud)
全部在一个文件中运行完美,在2个单独的文件中给我这个错误:
ReferenceError: ISTANCE_NAME is not defined
Run Code Online (Sandbox Code Playgroud)
我无法在user.js中执行第二个initializeApp,因为firebase抛出错误:
错误:默认的Firebase应用程序已存在。这意味着您多次调用了initializeApp(),而没有提供应用名称作为第二个参数。在大多数情况下,您只需要调用一次initializeApp()。但是,如果您确实要初始化多个应用程序,则将第二个参数传递给initializeApp()以为每个应用程序指定唯一的名称。
如何在2个文件中共享相同的admin角色?我也尝试过将initializeApp函数放到另一个文件中,然后导入它,但不起作用,出现同样的错误(未定义ISTANCE_NAME)
小智 1
这是个好问题。
所以你说你只能打电话admin.initializeApp()一次是正确的。
const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
const userHandler = require('./user')
Run Code Online (Sandbox Code Playgroud)
const admin = require('firebase-admin')
Run Code Online (Sandbox Code Playgroud)
您不需要再次初始化它。配置在首次初始化后会正确存储。
或者,您可以做更混乱的事情,例如getAdmin()函数。
我过去的做法是定义函数并使用处理函数创建单独的文件,如下所示
updateHandler(req, res, admin); // or the other
updateHander(whateverParamsToOtherFile);
Run Code Online (Sandbox Code Playgroud)
您的所有函数都必须从文件中导出,index.js才能在 Firebase 上正确部署。我建议index.js存储所有函数,并从其他文件调用处理程序。
通过参数传递,就可以达到你想要的结果。但在 的特定情况下admin.initializeApp(),如果它在index.js.
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |