开发和生产使用不同变量的最佳实践

Enr*_*que 3 heroku node.js hapi.js

我正在开发一个用 node、hapijs、nodemon 等制作的小型服务器。
这是一个基本的 api 休息,它将随着持续的开发而增长。

我需要为开发人员提供不同的变量。和生产。我实际上只有一个 .env 文件。我读过不建议为此创建两个单独的文件。

我应该如何修改我的app.js以适应两种情况?

  1. 在开发和本地变量中在我的电脑上本地运行nodemon
  2. 部署到heroku时,使用生产变量

预先非常感谢,

bvd*_*vdb 6

正如您可能已经完成的那样。编写代码以使用环境变量。(无论您在本地运行还是在生产环境中运行,都是相同的代码。)。

const ACCESS_KEY = process.env.ACCESS_KEY;
Run Code Online (Sandbox Code Playgroud)

然后,您的 .env 文件仅包含您的本地设置,用于在本地计算机上进行调试。您可以添加.env文件.gitignore以确保它不会被推送到您的 git 存储库。

相比之下,生产设置根本不应该位于任何文件中。它们只能直接在云提供商的设置中进行配置。

  • 如果您使用的是 Azure,它们应该位于Azure Key Vault中
  • 如果您使用 AWS,它们应该位于AWS Parameter Store中
  • 如果您使用Heroku,那么应该在 Heroku 的设置中配置它们。

Heroku 设置

可以从heroku 应用程序仪表板中的“设置”选项卡执行此操作。有一个“配置变量”部分。

设置

当heroku启动你的应用程序时,它会将配置的配置变量定义为环境变量。process.env您将能够像使用开发期间在文件中定义的环境变量一样访问它们.env

命令行界面

仪表板使您可以轻松了解概览并管理按键。也许更方便的是,您还可以直接从命令行使用 heroku cli 工具来执行此操作。

要获取当前环境变量的列表,请运行。

heroku config
Run Code Online (Sandbox Code Playgroud)

从 CLI 添加新密钥。

heroku config:set ACCESS_KEY=adfsqfddqsdf
Run Code Online (Sandbox Code Playgroud)

所有这些在Heroku 的官方文档中也有描述。