Node.js,开发环境与生产环境的区别

Node.js 的开发环境和生产环境之间没有区别,也就是说,你不需要应用任何特定的设置来使 Node.js 在生产配置中工作。然而,npm 注册表中的一些库会识别出使用 NODE_ENV 变量,并将其默认设置为 development 设置。始终使用 NODE_ENV=production 设置来运行你的 Node.js。

一种流行的配置应用程序的方法是使用 十二要素方法

为什么 NODE_ENV 被认为是一种反模式?

环境是一个数字平台或系统,工程师可以在其中构建、测试、部署和管理软件产品。通常,我们的应用程序运行在四个阶段或类型的环境中

  • 开发
  • 测试
  • 预发布
  • 生产

NODE_ENV 的根本问题源于开发人员将优化和软件行为与他们的软件运行的环境相结合。结果是类似下面的代码

if (process.env.NODE_ENV === 'development') {
  // ...
}

if (process.env.NODE_ENV === 'production') {
  // ...
}

if (['production', 'staging'].includes(process.env.NODE_ENV)) {
  // ...
}

虽然这看起来可能无害,但它使得生产环境和预发布环境不同,从而使可靠的测试成为不可能。例如,当 NODE_ENV 设置为 development 时,你的产品的测试以及功能可能会通过,但当设置 NODE_ENVproduction 时会失败。因此,将 NODE_ENV 设置为除 production 之外的任何值都被认为是一种反模式