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

Man*_*ngh 2 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;
Run Code Online (Sandbox Code Playgroud)

我不希望更改模块的配置文件,因为node_modules文件夹保留在gitignore列表中.对于配置模块使用我的应用程序的appIdappSecret,我需要设置process.env变量FACEBOOK_APPIDFACEBOOK_APPSECRET

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

帆升降机

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

mdu*_*sch 8

您应该在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();
};
Run Code Online (Sandbox Code Playgroud)