我试图使用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
列表中。为了配置模块以使用我的应用程序的appId
和appSecret
,我需要设置process.env
变量FACEBOOK_APPID
和FACEBOOK_APPSECRET
我知道它可以在调用sails lift时完成,但是是否有可能在应用程序中设置这些值,以便我只需要调用
风帆升力
没有这些变量,这些应该自动设置吗?或者什么是实现我在这里想要做的最好的方法?
你应该在应用程序外部设置环境变量。
你也可以用node app.js
代替sails lift
。您可以使用以下命令为您的节点应用程序定义环境变量:
$> 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();
};
当sailings中的"Production", "Staging"one_answers"Development"显得支离破碎时,这里是设置环境变量的一个很好的链接。
这是一个快速的视频教程,简单地解释了如何在node.js中创建环境变量
步骤1:安装包dotenv作为依赖
$ npm install dotenv --save
步骤2:然后在app.js中要求dotenv并加载。env文件
var dotenv = require('dotenv');
dotenv.load();
步骤3:在根目录下创建一个。env文件。在与app.js文件相同的文档级别)
目的:添加环境变量
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提供本教程
SailsJS有一种方法可以在覆盖配置文件(例如production.js)中的任何配置的环境中设置它们。
这个用法的文档链接在这里:https://sailsjs.com/documentation/concepts/configuration ? setting-sailsconfig-values-directly-using-environment-variables
你可以这样设置环境变量,如果使用风帆控制台(这是来自文档)
sails_security__cors__allowOrigins='["http://somedomain.com","https://anotherdomain.com:1337"]' sails console
如果您正在使用云环境,您可以在环境中设置它。
要在应用程序内部进行设置,请使用配置文件结构config/env/*,其中*是stagingjs production.js
让你的请求像这样
module.exports.getAccessToken = async () => {
const tokenData = await axios({
method: "POST",
url: `${sails.config.custom.externalAPI.auth}`,
headers: { "Content-Type": "application/json" },
data: {
grant_type: "client_credentials",
client_id: `...`,
client_secret: `...`,
audience: ...``,
},
})
不要使用dotenv的进程。Env to set as sails为您提供了一种在框架内完成此操作的方法。