我有一个我在Node.js应用程序中使用的API密钥.目前,我将它保存在一个文本文件中,并在我的应用程序启动时将其放在一个全局变量中.
Sooo基本上只是:
var key = getKey();
useKeyGetData(key);
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个全局变量,在文件之间传递是一件痛苦的事.有没有更好的方法来获取我的钥匙在何时/何时需要它?这样做有一些标准吗?
Jor*_*eña 48
您正在做的事情的常规替代方案,尤其是与API密钥相关时,是使用环境变量.这是一个操作系统级配置工具.每个进程都有自己的一组环境变量,通常从其父进程继承.按照惯例,环境变量具有大写名称.
在node.js中,您可以通过访问环境变量process.env
.例如,如果您运行这样的应用程序:
$ MY_VARIABLE=test node app.js
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式访问MY_VARIABLE
环境变量的值:
process.env.MY_VARIABLE
Run Code Online (Sandbox Code Playgroud)
但是,在每次调用程序时必须继续传递环境变量,这可能很乏味.这就是为什么像dotenv这样的软件包允许您将环境变量存储在文本文件中的原因.
更具体地说,您将拥有一个名为的文件.env
,您可能拥有:
MY_VARIABLE=test
OTHER_VARIABLE=foo
Run Code Online (Sandbox Code Playgroud)
在你的开始app.js
,你做:
require('dotenv').config();
Run Code Online (Sandbox Code Playgroud)
这将从.env
文件中读取环境变量值.然后,您可以像访问任何其他环境变量一样访问它们:
console.log("MY_VARIABLE: " + process.env.MY_VARIABLE);
console.log("OTHER_VARIABLE: " + process.env.OTHER_VARIABLE);
Run Code Online (Sandbox Code Playgroud)
现在,您不必在调用时将环境变量显式传递给应用程序,即您可以像往常一样运行它:
$ node app.js
Run Code Online (Sandbox Code Playgroud)
如果你不明确地传递一个,它将覆盖你在给了任何价值.env
的文件:
$ MY_VARIABLE=bar node app.js
Run Code Online (Sandbox Code Playgroud)
现在MY_VARIABLE
环境变量将具有值"bar"
而不是"testing"
.由于OTHER_VARIABLE
未显式传递,因此它将保留其"foo"
在.env
文件中指定的值.
归档时间: |
|
查看次数: |
15589 次 |
最近记录: |