Node.js 如何正确更新module.exports?

Node.js 如何正确更新module.exports?,node.js,Node.js,我有一个文件,其中存储了一些环境变量。 让我们称之为generalEnv.js module.exports = { CONSTANT_1: process.env.CONSTANT_1, CONSTANT_2: process.env.CONSTANT_2 }; 当应用程序初始化时,我还没有将process.env.CONSTANT_1的值放在env变量中,因为我必须首先查看一些地方,例如它是否存在Smongodb。如果它在mongodb上不存在,我将在process.env.CON

我有一个文件,其中存储了一些环境变量。 让我们称之为generalEnv.js

module.exports = {
  CONSTANT_1: process.env.CONSTANT_1,
  CONSTANT_2: process.env.CONSTANT_2
};
当应用程序初始化时,我还没有将process.env.CONSTANT_1的值放在env变量中,因为我必须首先查看一些地方,例如它是否存在Smongodb。如果它在mongodb上不存在,我将在process.env.CONSTANT_1中添加一个值,我希望该值现在会反映在generalEnv上

当我试图访问另一个文件中的常量_1时。 我们称之为getConstantOne.js

const { CONSTANT_1 } = require('./generalEnv');

module.exports = () => {
  // I was expecting that CONSTANT_1 will have a value here now
  if(!CONSTANT_1) {
    // do something
  }

  return CONSTANT_1
}

它不反映。。如何更新process.env.CONSTANT_1的generalEnv.js闭包以反映常量_1?

在数组中为变量或对象/元素中的值赋值时,赋值将替换该值,而不是修改它。因此,该值的任何副本都不会受到影响,并且保持不变。考虑这个例子:

let a = 0;
let b = a;
a = 1;
b怎么了?答:其值为0

为了解决这个问题,我们需要一些方法来修改值,而不是替换它。不幸的是,不能在javascript中修改基本类型字符串/数字/布尔值等。但是,有些类型可以修改,例如对象。您可以通过将变量包装到名为env的对象中来解决此问题

let env: { 
  CONSTANT_1: process.env.CONSTANT_1,
  CONSTANT_2: process.env.CONSTANT_2
}
modules.exports = { env }
然后修改:

env.CONSTANT_1 = "new value"
以及访问:

if (!env.CONSTANT_1) { ... }