2016-12-03 19 views
0

我试图尽我所能模块化我的代码。如果在github上共享我的App.js,我不希望不得不删除这些id,我宁愿将它包含在一个单独的文件中,只是将它加入.gitignore它。为什么我的firebase配置工作不正常?

出于某种原因,我的应用程序只是真的不喜欢我这样做的方式,而且我正在努力解决这个问题。任何想法我做错了什么?

这是我App.js文件:

import firebase from 'firebase'; 
import { 
    apiKey, 
    authDomain, 
    databaseURL, 
    storageBucket, 
    messagingSenderId 
} from './constants/Keys'; 

class App extends Component { 
    constructor(props) { 
    super(props); 
    this._navContext = initNavigationContext(); 
    } 

    componentWillMount() { 
    const config = { 
    apiKey, 
    authDomain, 
    databaseURL, 
    storageBucket, 
    messagingSenderId 
    }; 

    firebase.initializeApp(config); 
    } 

    render() { 
    return (
     <Provider store={Store}> 
     <NavigationProvider context={this._navContext}> 
      <StackNavigation navigatorUID="root" id="root" initialRoute={Router.getRoute('auth')} /> 
     </NavigationProvider> 
     </Provider> 
    ); 
    } 
} 

export default App; 

我省略了其它导入语句在这里。

这里是我的Keys文件:

const apiKey = '//////'; 
const authDomain = '//////'; 
const databaseURL = '//////'; 
const storageBucket = '//////'; 
const messagingSenderId = '//////'; 


const facebookAppID = '//////'; 

export default { 
    apiKey, 
    authDomain, 
    databaseURL, 
    storageBucket, 
    messagingSenderId, 
    facebookAppID 
}; 

任何想法,我做错了什么?

回答

1

我认为你的问题是你试图破坏默认导出,而ES6模块做的是使用解构来命名导出。如果您导入的值全部为undefined,则情况可能如此。您可以执行以下操作:

export const apiKey = '//////'; 
export const authDomain = '//////'; 
export const databaseURL = '//////'; 
export const storageBucket = '//////'; 
export const messagingSenderId = '//////'; 


export const facebookAppID = '//////'; 

然后它应该工作。