reactjs - 如何使用不同的 .env 文件多次运行 1 个 Express 服务器项目
问题描述
我创建了一个可以有不同用途的无头 CMS 项目,现在我在 1 台服务器上运行 2 个网站,但是为了做到这一点,我有 2 个不同的文件夹具有相同的项目,它们之间的唯一区别是包含数据库名称的 .env 文件,端口和所有必需的数据。这将导致服务器的性能使用。
现在我想使用不同的 .env 文件多次运行 1 个快速服务器项目。我知道我们可以通过更改 .env 中的 1 个变量来运行服务器,例如 ("NODE_ENV=production node ./server.js") 但我想使用完全不同的 .env 文件运行项目,所以在文件夹中,我将有 .env1 .env2 .env3 ,因此当我运行项目时,它会在具有多个数据库的多个端口上运行多次,最后我只能通过 1 个项目同时运行多个网站。
在此先感谢您的帮助
解决方案
您可以尝试使用dotenv
https://www.npmjs.com/package/dotenv
您可以通过 path 选项指定要使用的 .env 文件路径,如下所示:
require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` })
然后使用正确的环境变量运行您的脚本以获取正确的.env
文件。
您可以根据path
需要更改它,只要它指向正确文件的正确路径即可。
编辑1:
https://github.com/toddbluhm/env-cmd
对于 CLI 级别的解决方案,您可以使用它。
npm install -g env-cmd
然后在你的package.json
{
"scripts": {
"server": "env-cmd ./env1 node index.js",
"server2": "env-cmd ./env2 node index.js",
...
}
}
推荐阅读
- reactjs - 替换状态数组后使用useEffect更新子组件的正确方法
- excel-formula - 获取单元格的格式化值以用于左右功能
- discord.js - 如何让 discord.js 机器人在不包含前缀和命令名称的情况下重复用户的消息?
- flutter - 如何在android studio中获取flutter sdk路径?
- python - 使用 Python 脚本将 CSV 文件上传到 DynamoDB
- python - python中基于单词和非单词的字符串替换
- docker - keycloak 无效参数:redirect_uri (Azure)
- reactjs - 反应实用程序函数来绑定这个关键字
- swiftui - SwiftUI 如何使用滑动禁用行删除?
- postgresql - solr 中的数据是否由 ckan 中的 postgres 支持