在生产中的本地计算机上设置环境变量

问题描述 投票:0回答:3

在本地计算机上的生产环境中运行Express应用时,应如何处理环境变量的设置?

我正在使用config软件包。在开发中,我使用此配置文件-development.json

{
    "mongoURI": "myMongoConnectionStringWithUsernameAndPassword",
    "apiKey": "mySuperSecretSuperSecret"
}

据我所知,在生产中,不应将此类敏感数据存储在文件中。据我了解,原因是,如果将这样的文件检入版本控制,则每个人都可以访问其中包含的敏感信息(如果还有其他原因,请详细说明)。因此在生产中,我的配置文件如下所示-production.json

{
    "mongoURI": "",
    "apiKey": ""
}

此外,我使用文件custom-environment-variables.json将环境变量映射到配置值。然后可以使用例如Heroku信息中心,可让Express应用程序使用它们。

{
    "mongoURI": "db_uri"
    "apiKey": "api_key"
}

但是,在我的本地计算机上,我不知道一种方便的方法来轻松设置和更新这些环境变量。

我曾考虑过通过在package.json中在生产环境中运行我的应用程序的启动脚本来设置它们,但随后我会将它们再次保存在文件中,这与如上所述将它们存储在production.json中是相同的问题。

这在实践中如何完成?在本地计算机上,每次要在生产环境中运行应用程序时,是否都必须手动在终端上设置所有环境变量?有没有更好的方法?

node.js express environment-variables development-environment production-environment
3个回答
0
投票

您可以使用dotenv执行此操作!


0
投票

此问题似乎特定于config软件包。

在这种情况下,人们认为加密机密是一个好主意:

https://github.com/lorenwest/node-config/wiki/Securing-Production-Config-Files

如果您未使用config,那么使用环境变量是用于存储敏感数据的一种非常常见的模式:

https://nodejs.dev/how-to-read-environment-variables-from-nodejs


最后一点疑问:在本地计算机上运行生产?似乎根本不希望您执行任何操作。您可能需要对生产数据存储进行更改。


0
投票

Node.js为您提供了通过CLI设置环境变量的方法,>>

process.env属性返回包含用户环境的对象

因此您可以在启动命令之前设置配置,例如“ mongoURI = xxxx npm start”,这是简单的方法,

© www.soinside.com 2019 - 2024. All rights reserved.