【问题标题】:Node.js - how to set environment variables in codeNode.js - 如何在代码中设置环境变量
【发布时间】:2015-04-10 11:57:10
【问题描述】:

我对 node.js 相当陌生,并且有一个程序,我必须设置一个环境变量才能运行(使用 noble 库,我的 bash 命令是:sudo NOBLE_HCI_DEVICE_ID=x node program.js,告诉我的代码哪个蓝牙适配器 - HCI 设备 - 使用)。

这背后的原因是我有许多模块,每个模块都需要自己的蓝牙适配器,我希望在我的代码中指定每个模块应该使用哪个适配器。

我发现很多文章告诉我如何在我的代码中使用环境变量并通过命令行 (process.env.VARIABLE_NAME) 设置它们,但没有告诉我如何在 node.js 中设置它们。

是否可以在我的 node.js 代码中设置环境变量?

【问题讨论】:

标签: javascript linux node.js bluetooth-lowenergy


【解决方案1】:

您不仅可以使用process.env 使用节点中的环境变量,还可以设置它们。这将在您当前的节点进程和它调用的任何子进程中设置变量,而不是调用 shell 本身。

// consume
var alreadySetEnvVarForDevice = process.env.NOBLE_HCI_DEVICE_ID

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

【讨论】:

  • 或者你可以这样做:process.env.NOBLE_HCI_DEVICE_ID = 1
  • 我带着同样的问题来到这里,但这个答案对我来说还不够好。我需要使用节点来设置环境变量,这些变量将 (1) 对节点以外的其他进程可见,并且 (2) 比节点进程寿命更长。
  • 我的需求和@Tom一样。我想将 Node 中的 env 设置为 init 函数。然后当我退出node,再次运行时,它会在环境中读回使用。
  • 事实证明这是不可能的,而且原因似乎很好。
【解决方案2】:

如果你使用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' 

【讨论】:

    【解决方案3】:

    在命令提示符下运行如下命令

    export FOREVER_ROOT=/var/log/
    

    这里export设置一个环境变量

    在您希望更新变量的每个 shell 中执行“/etc/environment”:

    $ /etc/环境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2012-07-28
      • 2020-05-31
      • 2016-03-20
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多