NODE_ENV在部署后变为production吗?

16 浏览
0 Comments

NODE_ENV在部署后变为production吗?

这可能是个愚蠢的问题,但我无法在任何地方找到一个直接的答案,所以我宁愿问出来,而不是继续怀疑。

我正在阅读有关设置Node环境的内容。对于这个问题的回答说,我们不应该在Node应用程序内部设置NODE_ENV。

所以,我理解的是我们通过操作系统来设置,像这样:

- Linux和Mac:export NODE_ENV=development

- Windows:set NODE_ENV=development

但是当我们部署到Heroku或AWS等平台时,我们想要将其更改为生产环境,我们应该在哪里进行更改?这是自动的吗(Heroku或AWS上的服务器已经设置为生产环境)?

正如我所说,可能是个愚蠢的问题。但是文档似乎是为那些已经知道如何使用它的人编写的。

0
0 Comments

在部署后,NODE_ENV变为production的原因是根据部署机制的不同而异。如果在AWS上运行ec2实例,那么它只是一个简单的机器,对于如何部署代码一无所知。

以一个具体的例子来说,假设你正在运行Docker,并且有一个构建步骤,在这个步骤中你创建Docker镜像。然后在你的Dockerfile中,你可以将NODE_ENV设置为production

所以,我可以假设,在开发阶段和部署之间,必须有一些东西,由我或者部署机制来将NODE_ENV设置为production?

是的。但也要注意,这不是你必须使用的。这只是一种约定,如果你需要根据代码运行的位置(开发、预发布或生产)来实现不同的行为。

有时,当在本地运行时,做一些与开发环境相关的事情可能很有用,比如if (process.env.NODE_ENV === 'dev') { /* something related to dev env only */ },也许与本地数据库通信。

好的,那么将NODE_ENV更改为production的正确位置将由我部署到的机制的文档提供?也就是说,Heroku将有它自己的位置设置NODE_ENV,AWS将有它自己的位置设置NODE_ENV,依此类推...?也许某些机制默认已经设置为Production...?

有些机制会有,有些不会。一般来说很难说。

好的,这就是我想知道的。谢谢。

0