📜  Node.js 中的 NODE_ENV 是什么?

📅  最后修改于: 2022-05-13 01:56:18.305000             🧑  作者: Mango

Node.js 中的 NODE_ENV 是什么?

环境变量:在深入研究 NODE_ENV 之前,让我们先了解一下环境变量的上下文。环境变量是一个动态命名的值,通常用于提供将值从外部匿名配置到代码中的能力。简单来说,环境变量就是一个变量(键值对),它的值是在程序外部设置的,它的值可以通过某种机制在代码内部匿名使用。这些在进程启动时设置的环境变量由 Node.js 的进程核心模块提供的env属性托管。

环境变量示例:

USER_ID=239482
KEY=foobar

上面的环境变量可以像这样访问:

process.env.USER_ID
process.env.KEY

现在我们对环境变量有了一些了解,让我们继续前进,了解一下 NODE_ENV。

什么是 NODE_ENV?

NODE_ENV是一个环境变量,代表 express 服务器中的节点环境。 NODE_ENV环境变量指定应用程序运行的环境(通常是开发或生产环境)。根据这一点,应用程序可以执行特定任务,例如打开或关闭调试、侦听特定端口等。

NODE_ENV 作为性能提升器:我们可以做的提高性能的最简单的事情之一就是将 NODE_ENV 设置为“生产”。

将 NODE_ENV 设置为“生产”使得 Express:

  • 缓存视图模板。
  • 缓存从 CSS 扩展生成的 CSS 文件。
  • 生成不太详细的错误消息。

从而提高开发相对较慢的应用程序的性能。

如何正确设置 NODE_ENV?

NODE_ENV 与任何其他环境变量一样工作。如何设置取决于所使用的平台。

On Linux and OSX: export NODE_ENV=production
On Windows: $env:NODE_ENV = 'production'

在启动应用程序时设置:在所有平台上,我们可以在启动应用程序时显式设置 NODE_ENV,如:

NODE_ENV=production node app.js

访问 NODE_ENV:我们可以像其他环境变量一样使用 NodeJS 的processenv访问 NODE_ENV,正如我们在学习环境变量时已经看到的那样。

process.env.NODE_ENV

我们可以通过使用process.env.NODE_ENV 检查 NODE_ENV 的值来编写特定于环境的代码。

以下是访问和使用 NODE_ENV 的一些代码片段供参考:

示例 1:

Javascript
var environment = process.env.NODE_ENV;
  
if(environment === 'production') {
  
    /* Do something specific
    to production environment. */
}


Javascript
var environment = process.env.NODE_ENV;
  
if(environment === 'development') {
  
    // connect to local database.
}
else {
  
    // connect to hosted database.
}


示例 2:

Javascript

var environment = process.env.NODE_ENV;
  
if(environment === 'development') {
  
    // connect to local database.
}
else {
  
    // connect to hosted database.
}

注意:

  • 我们可以使用 express 提供的app.get('env')函数来获取 NODE_ENV 的值,但它默认为“开发”而不是生产。
  • 如果 NODE_ENV 没有为环境显式设置并使用process.env访问,那么它将是未定义的。
  • 从应用程序中设置 NODE_ENV 是个坏主意。在这种情况下,它只会应用于设置它的进程。

结论:在本文中,我们几乎涵盖了所有关于 NODE_ENV 的内容。我们看到了它与任何其他环境变量的相似之处,但是当我们想要编写一些特定于环境的代码或逻辑时,它可以成为一个方便的工具。我们了解了如何设置和使用 NODE_ENV 环境变量、它的用途和用途。