Node.js 开发环境与生产环境的区别
在 Node.js 中,开发环境和生产环境之间没有区别,也就是说,您不需要应用任何特定设置来使 Node.js 在生产配置中工作。然而,npm 注册表中的一些库会识别 NODE_ENV 变量并将其默认为 development 设置。请始终在运行 Node.js 时设置 NODE_ENV=production。
配置应用程序的一种流行方法是使用 十二要素应用方法论。
为什么 NODE_ENV 被认为是一种反模式?
环境是一个数字平台或系统,工程师可以在其中构建、测试、部署和管理软件产品。传统上,我们的应用程序在以下四个阶段或类型的环境中运行:
- 开发(Development)
- 测试(Testing)
- 预发布(Staging)
- 生产(Production)
NODE_ENV 的根本问题在于开发人员将优化和软件行为与其软件运行的环境结合起来。结果就是出现了如下代码:
if (.. === 'development') {
// ...
}
if (.. === 'production') {
// ...
}
if (['production', 'staging'].(..)) {
// ...
}
虽然这可能看起来无害,但它使得生产环境和预发布环境不同,从而无法进行可靠的测试。例如,当 NODE_ENV 设置为 development 时,一个测试(也就是您产品的一个功能)可能会通过,但当 NODE_ENV 设置为 production 时则会失败。因此,将 NODE_ENV 设置为除 production 之外的任何值都被认为是一种反模式。