在 node.js 中要求('dotenv').config()

require('dotenv').config() in node.js

在我的 node.js 应用程序中,我在本地开发时需要 require('dotenv').config(); 行以使用环境变量。但是,当我部署到 AWS 时,我需要注释掉这一行,否则应用程序会崩溃。目前我有 4 条这样的线,当我 push/pull 应用程序时必须保留 commenting/uncommenting 它们有点烦人 - 是否有任何解决方法可以消除在以下情况下必须继续删除线的需要当我在本地拉动和工作时,我部署到 AWS/including 线路?

也许您可以检查 NODE_ENV 的值(我假设您部署在 production)。

类似于:

if (process.env.NODE_ENV === 'development') {
  require('dotenv').config();
}

或者只是如果 NODE_ENV 不是 production(如果你有 NODE_ENV === 'test' 这样的东西就很有用):

if (process.env.NODE_ENV !== 'production') {
  require('dotenv').config();
}

还请看一下名为 config 的 npm 包。它为我们提供了多个 files.json 和 default.json、development.json、local.json。在某些情况下,我们只需要在开发或任何其他环境中更改一些密钥,而我们希望在所有环境中使用相同的东西,如端口、jwt 秘密等。看看 link

https://www.npmjs.com/package/config

IMO 最好不要有检查 NODE_ENV 和加载特定情况的代码。

我将其放入专用的 npm 脚本,如 npm run dev,我将在其中加载 dotenv/config 并根据需要设置 .env 文件的路径。

在你的情况下 package.json 可能看起来像

  "scripts": {
    "dev": "node -r dotenv/config ./src/index.js"
  }

奖励曲目:如果您的包的父文件夹中有 .env 文件 + 启用远程调试器:

  "scripts": {
    "dev": "DOTENV_CONFIG_PATH=../.env node --inspect=0.0.0.0 -r dotenv/config ./src/index.js"
  }

那么你只需要 运行 npm run dev 就可以了。

对于生产,我会添加一个不带调试器和 dotenv/config 加载的不同 npm 脚本。