【问题标题】:Can't read environment variables from a Grunt server-run Node + AngularJS app无法从 Grunt 服务器运行的 Node + AngularJS 应用程序中读取环境变量
【发布时间】:2017-11-24 13:04:47
【问题描述】:

我在 AngularJS 和 Firebase 上创建了一个应用程序。我决定将 Firebase 凭据存储为环境变量。我在 Ubuntu 上,我使用 Grunt 运行开发服务器。

我尝试创建一个.bashrc 文件来存储环境变量,如下所示(将值插入引号之间)。

export APIKEY=""
export AUTH_DOMAIN=""
export DATABASE_URL=""
export STORAGE_BUCKET=""
export MESSAGING_SENDER_ID=""

然后我有一个config.js 文件,它使用这些变量来配置 Firebase。

var config = {
    apiKey: process.env.APIKEY,
    authDomain: process.env.AUTH_DOMAIN,
    databaseURL: process.env.DATABASE_URL,
    storageBucket: process.env.STORAGE_BUCKET,
    messagingSenderId: process.env.MESSAGING_SENDER_ID
};

firebase.initializeApp(config);

但是,我认为 Grunt 不会获取这些值,因为无论我运行 Grunt 服务器还是使用 node server.js 运行应用程序,它都找不到这些变量的值。我还尝试先从命令行创建变量,就像这样(在引号之间插入值)。

$ export APIKEY=""

无论如何,我的应用程序无法查看环境变量。它会在控制台中传递此错误。

Uncaught ReferenceError: process is not defined at config.js:2

当我将值直接插入config.js 文件时,应用程序运行良好。我尝试了多种在 Ubuntu 中配置变量的选项,但似乎都没有工作。

编辑: 还可能值得注意的是 Heroku 也无法识别变量,尽管我已经在 Heroku 中注册了它们,并且它提供了相同的错误 (process is not defined)。会不会是 Angular 的问题?

【问题讨论】:

    标签: angularjs node.js ubuntu gruntjs environment-variables


    【解决方案1】:

    您需要创建一个文件env.js,其中包含您的凭据并在您的config.js 文件中要求。您可以忽略来自Git 的文件。

    env.js

    module.exports = {
      APIKEY: "your-api-key",
      AUTH_DOMAIN: "your-auth-domain",
      DATABASE_URL: "your-database-URL",
      STORAGE_BUCKET: "your-storage-bucket",
      MESSAGING_SENDER_ID: "your-messaging-sender-id"
    }
    

    .gitignore

    env.js
    

    config.js

    var keys = require('env');
    
    var config = {
      apiKey: keys.APIKEY,
      authDomain: keys.AUTH_DOMAIN,
      databaseURL: keys.DATABASE_URL,
      storageBucket: keys.STORAGE_BUCKET,
      messagingSenderId: keys.MESSAGING_SENDER_ID
    };
    
    firebase.initializeApp(config);
    

    【讨论】:

    • 谢谢。我通常使用这种方法来存储配置信息。但是,这一次我还想让这个特定的应用程序轻松部署到 Heroku,它通常使用环境变量,因为这种类型的文件将存储在本地而不是推送到 git。有没有办法在我的应用程序中成功使用环境变量? Heroku 也无法识别它们。
    • 由于它是一个前端应用程序,您需要将凭据与其他 javascript 文件捆绑在一起,并将捆绑文件部署到 heroku,这就是我使用 gulp 的方式。
    猜你喜欢
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2010-10-06
    • 2015-07-17
    相关资源
    最近更新 更多