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

Eri*_*eng 5 node.js express nodemon dotenv

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

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

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

    "scripts": {
        "start": "nodemon --exec babel-node -r dotenv/config index.js"
    }
Run Code Online (Sandbox Code Playgroud)

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

但是,如果我使用脚本来index.js像这样配置 dotenv :

    "scripts": {
        "start": "nodemon --exec babel-node -r dotenv/config index.js"
    }
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的帮助。

tha*_*.ts 8

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

代替

import dotenv from 'dotenv'
dotenv.config()
Run Code Online (Sandbox Code Playgroud)

您可以使用

import 'dotenv/config'
Run Code Online (Sandbox Code Playgroud)

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

node --require dotenv/config build/index.js
Run Code Online (Sandbox Code Playgroud)

参考:

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