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

时间:2014-08-20 11:04:33

标签: sails.js waterline

我正在尝试使用npm模块fb来使用facebook api。配置文件位于模块中,这是同一

的快照
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列表中。要将模块配置为使用我的应用appIdappSecret,我需要设置process.env变量FACEBOOK_APPIDFACEBOOK_APPSECRET

我知道可以在调用sails lift时完成,但是无论如何都可以在app中设置这些值,这样我只需要调用

帆升降机

没有任何变量那些应该自动设置?或者,在这里实现我想做的最好的方法是什么?

2 个答案:

答案 0 :(得分:7)

您应该在App之外设置环境变量。

您也可以使用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();
};

答案 1 :(得分:0)

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