【问题标题】:Firebase Storage Web - creating reference does not workFirebase 存储网络 - 创建参考不起作用
【发布时间】:2018-07-22 13:28:11
【问题描述】:

我尝试了与 firebase 文档中给出的完全相同的方法。但这是我得到的错误。

 functions: Failed to load functions source code. Ensure that you have
 the latest SDK by running **npm i --save firebase-functions** inside the
 functions directory.

 functions: Error from emulator. FirebaseError: Error occurred while
 parsing your function triggers.

TypeError: storage.ref is not a function
    at Object.<anonymous> (/Users/user1/projects/newproj/functions/index.js:15:26)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:18:11
    at Object.<anonymous> (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:32:3)

代码:

let firebaseApp = firebase.initializeApp(functions.config().firebase);
const storage = firebaseApp.storage();
let storageRef = storage.ref('.../abc.pdf');

IDE 在 .ref 处抛出错误,指出 storage 上不存在属性 ref

函数依赖:

"dependencies": {
    "@google-cloud/functions-emulator": "^1.0.0-alpha.29",
    "express": "^4.16.1",
    "firebase": "^4.6.2",
    "firebase-admin": "^5.8.2",
    "firebase-functions": "^0.8.1",
    "grpc": "^1.9.0"
  }

【问题讨论】:

    标签: javascript firebase firebase-storage google-cloud-functions firebase-admin


    【解决方案1】:

    您的代码似乎在 Cloud Functions 中运行,这是一个服务器端 Node.js 环境。在那里,您可以使用 firebase-admin 从您的代码中调用其他 Firebase 服务。

    但是您使用的 FirebaseStorage.ref() 方法来自 Firebase Storage 客户端 SDK。它在 Admin SDK 中不可用。

    要准确了解您可以从admin.storage 使用什么,请查看reference documentationIntroduction to the Admin Cloud Storage API。您会看到此文档不包含对您尝试调用的 ref() 方法的引用。

    【讨论】:

    • 这意味着我不能有一个服务器端程序可以根据客户端请求访问和提供 Firebase 存储上的文件?
    • 你可以。但是客户端和服务器之间的 SDK 完全不同。据我所知,Firebase Storage 服务器端 SDK 几乎是围绕常规 Google Cloud Storage SDK 的精简初始化包装器。
    • 好的,谢谢。我希望有一些谷歌云库可以帮助我做到这一点。
    • GCS Node.js 库非常适合读取/写入文件。但如果您需要在客户端上提供结果,我肯定会使用 Firebase 客户端 SDK。
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 2020-01-04
    • 2020-11-01
    • 1970-01-01
    • 2019-05-24
    • 2019-01-04
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多