【发布时间】:2020-05-15 04:54:11
【问题描述】:
是否可以在已经加载并启动的 NodeJS 进程中注入/更改当前环境变量?
在应用程序中公开接口不是一个选项,重新启动也不是一个有效的选项。
该进程在 docker 容器内运行,可能需要特定的 NodeJS 版本。
编辑:必须从应用程序源外部进行更改,因此无法进行process.env.ENV_VAR = "new env"。
【问题讨论】:
标签: node.js environment-variables
是否可以在已经加载并启动的 NodeJS 进程中注入/更改当前环境变量?
在应用程序中公开接口不是一个选项,重新启动也不是一个有效的选项。
该进程在 docker 容器内运行,可能需要特定的 NodeJS 版本。
编辑:必须从应用程序源外部进行更改,因此无法进行process.env.ENV_VAR = "new env"。
【问题讨论】:
标签: node.js environment-variables
无法修改正在运行的进程的环境变量。这不是 NodeJS 进程独有的。这就是 env var 在类似 UNIX 的操作系统上的工作方式。变量存在于进程的地址空间内。虽然它们通常最初放置在堆栈顶部附近的众所周知的位置,但当前 var 可能位于堆中的任意地址。环境变量是有意为每个进程私有的。因此,除非程序提供了用于更改其环境变量的 API,否则您无法在程序运行后对其进行修改。
【讨论】:
environ var 指向 env var 的基础。问题是你不能改变那个 blob,除非你用一个长度相同或更短的新字符串替换一个特定的 var=value。您不需要为此进行内核扩展。事实上,通过内核扩展来做到这一点真的很难。你会想使用像 gdb 或 lldb 这样的调试器。
您应该使用在存储了 env 的容器之间共享的 redis 存储。
【讨论】: