首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: firebase.storage不是一个函数

TypeError: firebase.storage不是一个函数
EN

Stack Overflow用户
提问于 2016-12-27 20:59:05
回答 17查看 87.7K关注 0票数 78

下面是示例,我一直得到错误:

代码语言:javascript
运行
复制
 TypeError: firebase.storage is not a function

在我的代码中的这一行:

代码语言:javascript
运行
复制
var storageRef = firebase.storage().ref();

(当我简单地尝试从存储指南初始化存储,并从消防基地npm场地链接时,我会得到相同的错误。)

在我的Node.js项目中,我包括以下库:

  • const firebase = require('firebase');
  • var admin = require('firebase-admin');
  • const fs = require('fs');

到目前为止,我已经成功地读取和写入了firebase数据库,使用var db = admin.database()创建了对数据库的引用,然后使用var ref = db.ref("/").所以我知道我已经正确配置了Firebase和firebase数据库。但是我被困在了storage上,并且尝试了admin.storage().ref()firebase.storage().ref(),以及firebase.storage().ref("/")的错误信息。

我也试过:

代码语言:javascript
运行
复制
var storage = firbase.storage();
var storageRef = storage.ref();

代码语言:javascript
运行
复制
const app = firebase.initializeApp(config);
var storage = app.storage();

对于ref()的无效论点,()"/".有同样的信息,但都没有用。

我在用:

  • “火力基地”:"^3.6.4“
  • "firebase-admin":"^4.0.4“
  • Node.js : v6.9.1

要成功地创建对存储的引用,我必须做什么?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2016-12-27 21:43:32

不受欢迎,请参见下面的

根据这个答案的说法,在Node.js中,应该使用google-cloud包存储,而不是防火墙存储,似乎这个答案应该确认它。代码示例:

代码语言:javascript
运行
复制
npm i --save google-cloud

然后:

代码语言:javascript
运行
复制
const gcloud = require('google-cloud')

const storage = gcloud.storage({
    projectId: '<projectID>',
    keyFilename: 'service-account-credentials.json',
});

const bucket = storage.bucket('<projectID>.appspot.com')

截至2018年,这是正确的答案:

或者只使用包的存储部分:

代码语言:javascript
运行
复制
npm install --save @google-cloud/storage

然后:

代码语言:javascript
运行
复制
var storage = require('@google-cloud/storage')

还可以查看医生们以获得更多信息。

票数 30
EN

Stack Overflow用户

发布于 2018-06-09 10:27:41

我也面临着同样的问题。在我的例子中,除了Firebase内核之外,我还需要包括存储模块。

代码语言:javascript
运行
复制
import firebase from 'firebase/app';
import 'firebase/storage';  // <----

firebase.initializeApp({
  ...
});
const storageRef = firebase.storage().ref();

(国家预防机制第5.0.4版)

票数 118
EN

Stack Overflow用户

发布于 2016-12-28 00:05:48

反对意见:请参阅已接受的答案。

需要注意的一些细节:

  1. Firebase存储不再与Node.js一起使用,因此所有文档对于Node.js都是无用的。相反,使用google-cloud。到今天为止,Firebase和Google的参考和指南并没有反映出这一点。
  2. 与Firebase不同的是,即使是小型项目,谷歌云也要花钱。
  3. 在我的例子中,我使用的是firebase-admin SDK,所以我现在不需要处理用户身份验证问题。

目的

创建一个使用Firebase和Google的Node.js项目。为什么? Google有一个有用的数据库以及其他特性,Google允许云文件存储和检索。

方向

步骤1:项目创建

创建Firebase谷歌云(存储)项目。

步骤2:安装软件包

使用npm,在Node.js项目中安装firebase-admingoogle-cloud

注1:我使用了admin,所以在创建Firebase项目之后,您需要转到:

  • 设置(齿轮)>项目设置>服务帐户> Firebase管理SDK
  • 然后选择Node.js >复制/粘贴生成的代码到您的项目中>单击"Generate“>下载生成的json到首选位置>用您刚刚生成的键的路径替换"path/to...AccountKey.json"

注2:生成的密钥可以在firebase或google云凭据中重用。

第3步:设置防火墙

创建项目后,导入firebase-admin sdk:

代码应该如下所示,但其中包含了您的信息:

代码语言:javascript
运行
复制
var admin = require("firebase-admin");
admin.initializeApp({
  credential: admin.credential.cert("/path/to/generated/json/here.json"),
  databaseURL: "database-url-from-firebase"
});

要找到databaseURL,转到Firebase中的“Storage”,并注意以gs:开头的URL,并将其复制/粘贴到databaseURL的value字段。

接下来,获取可以使用的数据库的引用:

代码语言:javascript
运行
复制
var db = admin.database();
var ref = db.ref("/");
console.log('DB ref: ' + ref); //just to debug, if undefined, there's a problem.

要了解有关读/写数据库的更多信息,请遵循Firebase自己的文档

步骤4: Google计费设置

在Google上创建项目之后,添加计费信息;如果没有计费信息,则无法使用存储桶。

步骤5: Google-云存储设置

  1. 滚动菜单(水平3条),点击“存储”,然后“启用计费”。是的,您添加了账单信息,现在您需要为该项目的桶启用它。
  2. 您应该看到Firebase项目中已经存在一个桶。
  3. 再次单击菜单(3栏图标),然后> IAM & Admin >设置
  4. 在设置中,您将看到"projectName-00000“或"projectName-Some#”的“项目ID”,复制该项目ID

步骤6: Node.js中的Google

在你的index.js

代码语言:javascript
运行
复制
var gcloud = require('google-cloud');
var gcs = gcloud.storage({
  projectId: 'paste-that-project-id-here',
  keyFilename: 'paste-that-path-to-the-previously-downloaded-json-from-firebase-here'
});

现在,您可以通过以下方式向存储区发送文件:

代码语言:javascript
运行
复制
var bucket = gcs.bucket('bucket_name');
var remoteFile = bucket.file('somefile-inThisCaseASong.mp3');
var localFilename = '/Users/you/Music/somefile-inThisCaseASong.mp3';
bucket.upload(localFilename, function(err, file) {
  if (!err) {
    console.log('somefile-inThisCaseASong.mp3 is now in your bucket.');
  } else {
    console.log('Error uploading file: ' + err);
  }
});

步骤7:验证

如果该文件在Firebase存储和中可见,您就完成了!

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41352150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档