Javascript Firebase can';当使用process.env创建单独的数据库时,找不到databaseURL

Javascript Firebase can';当使用process.env创建单独的数据库时,找不到databaseURL,javascript,node.js,firebase,webpack,firebase-realtime-database,Javascript,Node.js,Firebase,Webpack,Firebase Realtime Database,我想拥有独立的数据库;一个用于测试,一个用于开发和生产。因此,使用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 &g

我想拥有独立的数据库;一个用于测试,一个用于开发和生产。因此,使用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
中(这两个文件类似,但数据当然不同):

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和节点环境文件库。

在firebase/index.js文件中,请尝试

console.log("NODE_ENV",process.env.NODE_ENV) 
console.log("API_KEY",process.env.APP_KEY)
如果API_密钥结果未定义

  • 确保配置/文件夹位于正确的位置
  • 删除.env文件中的所有空格

如果console.log显示API_键,它应该可以工作。

在webpack.config.js中,将reading.env文件替换为以下内容

envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV.trim() + '.env'));
所以你会得到一个修剪过的字符串

我也遇到了同样的问题,当我在try/catch块中打印错误时,我看到envFile试图查找.env文件,比如'config/test'。环境'。点号后的空格破坏了代码。 我猜它出现是因为这里有空格(在“test”和“&&&”)之间->“NODE_ENV=test&&karma start”

真是棘手的案子

envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV.trim() + '.env'));