全球价值观 – 反模式?

我最近被告知,访问其他地方的process.env值,但启动文件是反模式。 真的吗? 如果是这样,我该如何访问分配的值? 我应该把它们分配到global范围吗? 我真的不明白为什么这是反模式,有人可以向我解释这一点吗?

来自环境的configurationvariables往往是不可读的。 所以,你可能最终会得到像process.env.PRODUCTION_DATABASES_MONGO_PORT这样会弄乱你的代码。 如果在不同的文件中有很多process.env -s,可能很难理解什么样的可能选项(你应该运行NODE_ENV=dev node index还是NODE_ENV=development node indexFOO=true node index ?)。

作为最简单的解决scheme,不需要任何dependency injection,您可以简单地在根文件夹中创buildconfig.js ,如下所示:

 module.exports = { databases: { mongo: { port: process.env.BLAH_BLAH_BLAH } } // ... }; 

并只需要它,无论你想要的。