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