我可以在process.env中存储对象

时间:2015-12-22 14:53:08

标签: node.js

我将一个对象(有多种方法)存储到process.env中,如下所示:

var obj = createObject(); // returns new object
process.env.OBJ = obj;

当我从其他地方访问此对象时,我没有看到任何方法。

var obj = process.env.OBJ;

显示[Object Object]

为什么?

4 个答案:

答案 0 :(得分:8)

process.env是存储您的环境变量而不是真正存储您的对象。你可以存储你的变量:

process.env['CONSUMER_KEY'] = ""
process.env['CONSUMER_SECRET'] = ""
process.env['ACCESS_TOKEN_KEY'] = ""
process.env['ACCESS_TOKEN_SECRET'] = ""

以下是https://nodejs.org/api/process.html#process_process_env

的链接

如果要存储方法,则应创建一个全局对象并将方法分配给该方法。

答案 1 :(得分:7)

简短回答是:

不,您无法在process.env中存储对象,因为它存储了PATH, SHELL, TMPDIR等环境变量,这些变量由String值表示。如果运行命令console.log(process.env);,您可以看到系统的所有env变量,特别是您可以设置自己的env变量(例如process.env.home = 'home'),这些变量将在您运行nodejs应用程序的过程中可用。 / p>

解决方案存在!
Stringify JSON对象并保存为env变量。然后在需要对象时解析并使用它

答案 2 :(得分:2)

虽然您不能直接在process.env中存储对象,但是仍然可以存储在process本身中。

答案 3 :(得分:0)

尝试将对象字符串化并传递到 process.env 并解析字符串以获取这将起作用的对象。 例如。

var obj = createObject(); // returns new object

process.env.OBJ = JSON.stringify(obj);

在像 let objFromEnv= JSON.parse(process.env.OBJ);

这样的代码中使用它