官方文档中的firebase云存储API无法正常工作

时间:2018-02-28 07:33:14

标签: node.js firebase firebase-storage

首先,我使用npm初始化项目。

npm init
npm install --save firebase

之后,我编写了以下代码并使用Node.js稳定版本(v8.9.4)执行。

const firebase = require('firebase');

const config = {
  apiKey: '<API_KEY>',
  authDomain: '<MY_PROJECT>.firebaseapp.com',
  databaseURL: 'https://<MY_PROJECT>.firebaseio.com/',
  storageBucket: 'gs://<MY_PROJECT>.appspot.com/'
}

firebase.initializeApp(config);
const storage = firebase.storage();

然后会发生以下错误:

TypeError: firebase.storage is not a function
    at Object.<anonymous> (/Users/myuser/sandbox/google/storage_sample/index.js:12:26)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Function.Module.runMain (module.js:684:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

我参考了官方的firebase文档。(https://firebase.google.com/docs/storage/web/create-reference

如果我使用&#34; firebase-admin&#34;,则没有问题,这也是如下所示。

const admin = require('firebase-admin');
var serviceAccount = require('./AUTH_FILE.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<MYPROJECT>.firebaseio.com",
  storageBucket: '<MYPROJECT>.appspot.com/'
});

const storage = admin.storage();
const bucket = storage.bucket();

bucket.
  getFiles().then(results => {
    const files = results[0];
    console.log("Files:");
    files.forEach(file => {
      console.log(file.name);
    });
  }).catch(err => {
    console.error("Error:", err);
  });

是使用javascript访问云存储的唯一方法&#34; firebase-admin&#34;? 或者我的代码有错误吗?

1 个答案:

答案 0 :(得分:1)

如果您正在node.js上运行,那么正确的库就是firebase-admin,正如您所发现的那样。

Web SDK用于在浏览器中运行,您没有这样做。