使用Webpack的firebase自动SDK设置

时间:2017-06-12 10:39:02

标签: firebase npm webpack vue.js firebase-hosting

我正在创建一个使用Vue webpack和firebase的Web应用程序。当我在firebase cli上使用firebase use <some_alias>时,我想让我的firebase凭据自动更改。在其他项目中,这仅仅意味着包含firebase托管的/__/firebase/init.js文件。在这个项目中,我使用的是npm firebase库,可以使用

加载特定的firebase证书集
import firebase from 'firebase'

var config = {
  apiKey: '...',
  authDomain: '...',
  databaseURL: '...',
  projectId: '...',
  storageBucket: '...',
  messagingSenderId: '...'
}
firebase.initializeApp(config)

export default {
  database: firebase.database,
  storage: firebase.storage,
  auth: firebase.auth
}

但是,这不会根据我当前的firebase工作区获取我的凭据。相反,我想要像

这样的东西
import firebase from 'firebase'

const fbcli = require('firebase-tools');

export const getFirebaseInstance = () => {

  return fbcli.setup.web().then(config => {
    firebase.initializeApp(config)

    return firebase
  });
}

虽然同步。有没有办法同步加载我的firebase凭据?

2 个答案:

答案 0 :(得分:1)

通过在prod环境中检查window.location.host并且如果主机是我们的生产主机名并且从配置文件的值读取,则检查生产配置对象,从而解决了这个问题。

答案 1 :(得分:0)

尝试使用fs.writeFileSync中的const fbcli = require('firebase-tools'); const fs = require('fs'); // by default, uses the current project and logged in user fbcli.setup.web().then(config => { fs.writeFileSync( 'build/initFirebase.js', `firebase.initializeApp(${JSON.stringify(config)});` ); }); 来自a firebase blog post关于阅读凭据的说明:

 var array = [{"name": "aaa", "number": "123"},{"name": "abc", "number": "456"},{"name": "abcd", "number": "789"}]
 
 var result = array.filter(item => !item.name.includes("abc"));
 console.log(result)