javascript - 使用 NodeJS 设置环境变量

标签 javascript node.js linux export command-line-interface

我需要从 Node 设置一个环境变量(目前使用 v8.9.3)

理想情况下,我想在程序启动时运行 export DATA_DIR=/var/lib/data

1. 尝试生成一个 child_process 来设置它,但它似乎不起作用。

例子:

const { spawnSync } = require( 'child_process' );
spawnSync( 'export', [ 'DATA_DIR=/var/lib/data' ] );

但这会导致 ENOENT:

Error: spawnSync export ENOENT...
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawnSync export',
path: 'export',
spawnargs: [ 'DATA_DIR=/var/lib/data' ]

2. 尝试设置 process.env.DATA_DIR = '/var/lib/data' 但这似乎是本地的 Node 进程,不被其他人识别。

3. 尝试过的 npm 模块:dotenvenvsenvironmentaltiny-envs 这些主要用于加载环境变量。

提前谢谢你。

最佳答案

您不能为不是当前进程后代的进程设置环境变量。而在Linux下,是没有系统环境变量的。

export 不是一个独立的命令,而是一个 shell 内置命令,它为当前 shell 进程及其设置后 fork 的子进程设置环境变量。就像您打开终端的两个选项卡并从该选项卡中导出一个值并使用其他选项卡中的值。

您可以使用您的格式将键、值保存到文件中,然后另一个进程可以读取该文件以获取键的值。

关于javascript - 使用 NodeJS 设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47841094/

相关文章:

node.js - 如何将当前登录用户插入 mongoose 数据库。在应用程序中使用护照js

javascript - Rxjs 合并()不工作

Java 的 readInt() 在 C 中是否等效?

c - 10 个线程使用共享变量

linux - 在 linux 上限制用户访问

javascript - 如何传递对象上下文

javascript - TouchEvent/MouseEvent 在 div 中的局部位置

javascript - 在 React 中使用 OnClick 更改组件状态

javascript - 如何在 Liferay 的 URL 中附加变量

javascript - ExpressJS 用于在 GET 请求上呈现内容