我将一个对象(有多种方法)存储到process.env
中,如下所示:
var obj = createObject(); // returns new object
process.env.OBJ = obj;
当我从其他地方访问此对象时,我没有看到任何方法。
var obj = process.env.OBJ;
显示[Object Object]
。
为什么?
答案 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);