如何在开发和生产中设置 dotenv?

Posted

技术标签:

【中文标题】如何在开发和生产中设置 dotenv?【英文标题】:how to setup dotenv in development and production? 【发布时间】:2020-08-05 02:33:13 【问题描述】:

在我的 Express JS API 服务器中,我尝试将 dotenv 与 .env 文件一起用于我的环境设置。

我更喜欢将.env 文件用于开发和生产环境。

我正在使用 nodemon 进行开发,目前如果我在 package.json 中包含 -r dotenv/config > 启动脚本:

    "scripts": 
        "start": "nodemon --exec babel-node -r dotenv/config index.js"
    

在应用程序的任何地方都正确设置了 process.env 中的变量

但是,如果我使用脚本在 index.js 中配置 dotenv,如下所示:

import dotenv from 'dotenv'
// Environment variables
dotenv.config()

似乎 process.env 仅在 index.js 页面中配置,我无法在我的中间件逻辑中获取 process.env 变量? 我把dotenv.config()放在中间件执行之前的最开始执行

我的问题是: 1. 我使用dotenv.config() 的逻辑设置不正确吗?为什么我的中间件无法获得相同的变量? 2.如何设置从.env文件中读取的process.env变量用于开发和生产? (我可能会使用 webpack 来打包我的生产版本)

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可能在dotenv.config() 行之前有其他import 语句,这些模块将无法访问配置的环境变量

代替

import dotenv from 'dotenv'
dotenv.config()

你可以使用

import 'dotenv/config'

或使用以下命令启动您的应用程序,类似于您设置开发环境的方式。如果你在build 目录中有你的转译输出:

node --require dotenv/config build/index.js

参考:

https://www.npmjs.com/package/dotenv#how-do-i-use-dotenv-with-import-

【讨论】:

以上是关于如何在开发和生产中设置 dotenv?的主要内容,如果未能解决你的问题,请参考以下文章

如何更好地设置Laravel项目的生产环境设置?

如何使用 Amazon EC2 实例为生产设置 node.js process.env 变量?

如何在 Typescript 中加载 dotenv

如何在 NestJS 中正确设置配置?

如何在 Ruby on Rails 中为我的开发和生产环境设置不同的 api 密钥?

如何在金字塔中使用通用的 ini 配置(在开发和生产之间)?