代码之家  ›  专栏  ›  技术社区  ›  Mandeep Singh

sails.js是否可以从应用程序中设置process.env变量?

  •  3
  • Mandeep Singh  · 技术社区  · 12 年前

    我正在尝试使用 npm 模块fb使用facebookapi。配置文件位于模块中,下面是该模块的快照

    var config = { };
    
    // should end in /
    config.rootUrl  = process.env.ROOT_URL                  || 'http://localhost:3000/';
    
    
    config.facebook = {
        appId:          process.env.FACEBOOK_APPID          || '130243393813697',
        appSecret:      process.env.FACEBOOK_APPSECRET      || 'c82696768ae4ad8b63db874cb64eb558',
        appNamespace:   process.env.FACEBOOK_APPNAMESPACE   || 'nodescrumptious',
        redirectUri:    process.env.FACEBOOK_REDIRECTURI    ||  config.rootUrl + 'login/callback'
    };
    
    module.exports = config;
    

    我不想更改模块的配置文件,因为 node_modules 文件夹保存在 gitignore 列表用于配置模块以使用我的应用程序 appId 和 appSecret ,我需要设置 process.env 变量 FACEBOOK_APPID 和 FACEBOOK_APPSECRET

    我知道这可以在调用帆升降时完成,但是否可以在应用程序中设置这些值,以便我只需要调用

    帆式升降机

    没有这些变量,这些变量应该自动设置?或者,实现我在这里所做的事情的最佳方式是什么?

    2 回复  |  直到 12 年前
        1
  •  9
  •   mdunisch    12 年前

    您应该在应用程序外部设置环境变量。

    而不是 sails lift 你也可以使用 node app.js 。这样,您可以使用以下命令为节点应用程序定义环境变量:

    $> FOO='bar' node app.js

    在您的案例中:

    $> FACEBOOK_APPID='232322a22' FACEBOOK_APPSECRET='mysecrete' node app.js

    如果你想在你的应用程序中设置这个变量(我不建议!),你可以在包含npm模块之前设置它们。例如,在您的 config/bootstrap.js :

    module.exports.bootstrap = function(cb) {
    
      process.env.FACEBOOK_APPID = "myvar";
      process.env.FACEBOOK_APPSECRET = "mysecrete";
      sails.facebook = require("yourmodule");
    
      cb();
    };
    
        2
  •  3
  •   Eli Peters    8 年前

    Here 在Sails中的“生产”、“暂存”和“开发”感觉支离破碎时,是设置环境变量的一个很好的链接。

    Here 是一个快速视频教程,简单介绍了如何在node.js中创建环境变量

    步骤1: 作为依赖项安装包dotenv

    $ npm install dotenv --save
    

    步骤2: 然后在app.js中需要dotenv并加载.env文件

    var dotenv = require('dotenv');
    dotenv.load();
    

    步骤3: 在根文件夹中创建一个.env文件(即在与app.js文件相同的文档级别)

    步骤4: 添加环境变量

    S3_KEY=enfiownqefniqofewqofnieqwvewlk
    S3_SECRET=123456789
    

    现在,您可以在应用程序的任何位置访问这些环境变量(可能在某些配置/文件中):

    return {
      key: process.env.S3_KEY,
      secret: process.env.S3_SECRET,
      region: 's3-eu-west-1',
      bucket: 'myBucket',
      s3params: {
        ACL: 'public-read'
      }
    }
    

    信用卡转至 Noah Bass 以提供本教程。

    推荐文章