Node.js - 如何在代码中设置环境变量

43
我对node.js还比较陌生,我需要设置一个环境变量才能运行我的程序(使用noble库,我的bash命令是:sudo NOBLE_HCI_DEVICE_ID=x node program.js,以告诉我的代码应该使用哪个蓝牙适配器 - HCI设备)。
这样做的原因是我有许多模块,每个模块都需要自己的蓝牙适配器,并且我希望在我的代码中指定每个模块应该使用哪个适配器。
我找到了很多文章告诉我如何在我的代码中使用环境变量并通过命令行设置它们(process.env.VARIABLE_NAME),但没有告诉我如何从node.js中设置它们。
是否可以在我的node.js代码中设置环境变量?

您可以阅读此答案 https://dev59.com/KWEh5IYBdhLWcg3whT3S#57509175 - Daniel Danielecki
3个回答

76

在node中,您不仅可以使用process.env消耗环境变量,还可以设置它们。这将在当前的node进程及其调用的任何子进程中设置变量,但不会影响调用shell本身。

// consume
var alreadySetEnvVarForDevice = process.env.NOBLE_HCI_DEVICE_ID

// set
process.env['NOBLE_HCI_DEVICE_ID'] = 1

7
你可以使用以下方式:process.env.NOBLE_HCI_DEVICE_ID = 1 - Kien Pham
7
我来这里也想问相同的问题,但是这个答案对我来说不够好。我需要使用Node设置环境变量,使其(1)可被超出Node进程范围的其他进程看到,且(2)在Node进程结束后仍然存在。 - Tom
3
我的需求与 @Tom 相同。我希望在 Node 中设置环境,作为初始化函数。然后当我退出 Node 并再次运行时,它将处于读取使用的环境中。 - Ric
4
事实证明不可能,而且原因看起来合理。 - Tom

-8
如果您正在使用Express,可以按照以下方式设置变量:
var express = require('express');
var app = express();

// set the environment mode, default is process.env.NODE_ENV
app.set('env','development');

app.get('env');
// => 'development' 

-9
在命令提示符中运行以下命令:
export FOREVER_ROOT=/var/log/

这里export设置一个环境变量

或者

在每个你想要更新变量的shell中执行“/etc/environment”:

$ /etc/environment


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接