我想拥有单独的数据库;一个用于测试,一个用于开发和生产。因此,使用process.env变量和一个名为node-env-file的小库,我将firebase配置变量作为process.env变量。但是我得到了这个错误:
> Uncaught Error: FIREBASE FATAL ERROR: Can't determine Firebase
> Database URL. Be sure to include databaseURL option when calling
> firebase.intializeApp().
在webpack.config文件中:
var envFile = require('node-env-file');
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
try {
envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV + '.env'));
} catch (e) {
}
// (...)
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
API_KEY: JSON.stringify(process.env.API_KEY),
AUTH_DOMAIN: JSON.stringify(process.env.AUTH_DOMAIN),
DATABASE_URL: JSON.stringify(process.env.DATABASE_URL),
STORAGE_BUCKET: JSON.stringify(process.env.STORAGE_BUCKET),
MESSAGING_SENDER_ID: JSON.stringify(process.env.MESSAGING_SENDER_ID)
}
})
],
// (...)
在config/test.env
和config/development.env
中(这两个文件相似,但数据当然不同):
API_KEY=myapikeyhere
AUTH_DOMAIN=myauthdomainhere
DATABASE_URL=mydatabaseurlhere
STORAGE_BUCKET=mystoragebuckethere
MESSAGING_SENDER_ID=memessagingsenderidhere
在firebase/index.js
:
import firebase from 'firebase';
try {
var config = {
apiKey: process.env.API_KEY,
authDomain: process.env.AUTH_DOMAIN,
databaseURL: process.env.DATABASE_URL,
storageBucket: process.env.STORAGE_BUCKET,
messagingSenderId: process.env.MESSAGING_SENDER_ID
};
firebase.initializeApp(config);
} catch (e) {
}
export var firebaseRef = firebase.database().ref();
export default firebase;
我更新了firebase和node-env文件库。
答案 0 :(得分:0)
在firebase / index.js文件中,尝试
console.log("NODE_ENV",process.env.NODE_ENV)
console.log("API_KEY",process.env.APP_KEY)
如果未定义API_KEY结果,
如果console.log显示API_KEY,它应该可以工作。
答案 1 :(得分:0)
在你的webpack.config.js中用以下
替换读取.env文件envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV.trim() + '.env'));
所以你会得到一个修剪过的字符串。
我有同样的问题,当我在try / catch块中打印错误时,我看到envFile试图找到像'config / test这样的.env文件。 ENV”。点后面的空格打破了代码。 它出现是因为这里的空白,我想(在“测试”和“&&”之间) - > “NODE_ENV = test&& karma start”。
真的很棘手。