我正在开发一个基于node、hapijs、nodemon等构建的小型服务器。
这是一个基本的RESTful API,它将随着开发而不断增长。
我需要为开发和生产使用不同的变量。目前我只有一个.env文件。但据我所知,不推荐使用两个单独的文件来处理这个问题。
我应该如何修改我的app.js以满足以下两种情况:
- 在本地开发环境中,通过运行nodemon来使用本地变量
- 当部署到heroku时,使用生产变量
非常感谢您提前的帮助。
像你可能已经做的那样,编写你的代码使用环境变量。(无论你是在本地运行还是在生产环境下运行,都是同一份代码。)
const ACCESS_KEY = process.env.ACCESS_KEY;
你的 .env 文件仅包含用于在本地计算机上进行调试的本地设置。你可以将 .env
添加到你的 .gitignore
文件中,以确保它不会被推送到 Git 存储库。
相比之下,生产设置根本不应该出现在任何文件中。它们只应该直接配置在云服务提供商的设置中。
你可以从 Heroku 应用仪表板的"设置"选项卡中进行此操作。有一个名为 "Config vars" 的部分。
当 Heroku 启动你的应用程序时,它将定义已配置的配置变量作为环境变量。你将能够像访问在开发期间在你的 .env
文件中定义的环境变量一样使用 process.env
访问它们。
仪表板使得获取概览和管理密钥变得十分容易。更方便的是,你也可以通过 Heroku 的命令行工具 cli直接从命令行进行此操作。
要获取当前环境变量列表,请运行:
heroku config
从CLI添加新密钥。
heroku config:set ACCESS_KEY=adfsqfddqsdf
这一切也在Heroku的官方文档中有详细描述。
# .env
API_TOKEN = dev1
API_TOKEN
的配置变量,并将其设置为生产值:这将在应用程序启动时注入,永不存储/暴露。.properties
文件,但原则是相同的),并且适用于不同的托管提供商:您可以部署相同的应用程序/包,同时相应地配置环境设置。