Node.js process.env何时设置为NODE_env?

Node.js process.env何时设置为NODE_env?,node.js,express,Node.js,Express,为了部署到Heroku,我不得不将这段代码添加到我的项目中,该项目将Express作为后端,并作为前端进行响应(以及一些其他调整,如Heroku postbuild字段)。我不熟悉Express/Node和read process.env是节点环境,但只检查它是否存在/设置为true意味着什么?我看到人们使用它来将process.env.NODE\u env设置为开发或生产,但我不熟悉这种用法 if (process.env.NODE_ENV) { app.use(express.stati

为了部署到Heroku,我不得不将这段代码添加到我的项目中,该项目将Express作为后端,并作为前端进行响应(以及一些其他调整,如
Heroku postbuild
字段)。我不熟悉Express/Node和read process.env是节点环境,但只检查它是否存在/设置为true意味着什么?我看到人们使用它来将
process.env.NODE\u env
设置为开发或生产,但我不熟悉这种用法

if (process.env.NODE_ENV) {
  app.use(express.static('client/build'));
  const path = require('path');
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  });
}

if
条件用于检查是否设置了
NODE_ENV
(例如,“”将计算为
false

*
app.get()
是一个通配符,它匹配用户在此服务器的浏览器中键入的任何路由(即*)

因此,如果将
节点_ENV
设置为某个值(不一定是开发或生产环境),那么对于请求的任何路由(或站点上的任何网页),您将返回
客户端/build/index.html
文件-基本上呈现网站的索引(主页)

这个环境变量(即,
NODE_ENV
)被定义为某些计算机中的环境变量(例如,像Heroku这样的云上某处的VM)。在云上,它可能会将“生产”设置为一个值。在你的笔记本电脑上,它可能没有任何东西,因为你只是在测试它,玩它,等等。但生产环境非常重要,因为这是你的应用程序的用户可以看到和使用你的应用程序的地方


根据Express.js文档,“将NODE_ENV设置为“production”会使Express缓存视图模板;缓存从CSS扩展生成的CSS文件;并生成不太详细的错误消息。”参考:

我的猜测是,它在Heroku上发送这个
index.html
文件,而在不发送的情况下执行其他操作(取决于定义的路由)

此链接也可能有助于:


p.S.Natalie指出,自2015年以来,Heroku将Node.js应用程序设置为默认使用Node_ENV=production。参考:

如果有条件检查是否设置了
节点_ENV
(例如,“”将计算为
false

*
app.get()
是一个通配符,它匹配用户在此服务器的浏览器中键入的任何路由(即*)

因此,如果将
节点_ENV
设置为某个值(不一定是开发或生产环境),那么对于请求的任何路由(或站点上的任何网页),您将返回
客户端/build/index.html
文件-基本上呈现网站的索引(主页)

这个环境变量(即,
NODE_ENV
)被定义为某些计算机中的环境变量(例如,像Heroku这样的云上某处的VM)。在云上,它可能会将“生产”设置为一个值。在你的笔记本电脑上,它可能没有任何东西,因为你只是在测试它,玩它,等等。但生产环境非常重要,因为这是你的应用程序的用户可以看到和使用你的应用程序的地方


根据Express.js文档,“将NODE_ENV设置为“production”会使Express缓存视图模板;缓存从CSS扩展生成的CSS文件;并生成不太详细的错误消息。”参考:

我的猜测是,它在Heroku上发送这个
index.html
文件,而在不发送的情况下执行其他操作(取决于定义的路由)

此链接也可能有助于:


p.S.Natalie指出,自2015年以来,Heroku将Node.js应用程序设置为默认使用Node_ENV=production。参考:

可能重复。我看到那个问题,它没有回答我的问题。可能重复。我看到那个问题,它没有回答我的问题。谢谢你的回答。我理解该代码的作用,但我的问题更多的是process.env何时设置为NODE_env(何时设置为false或未设置)。为了清晰起见,编辑了这个问题。因此,这个环境变量(即,
NODE_ENV
)被定义为某些计算机中的环境变量(例如,云上某处的VM,如Heroku)。在云上,它可能会将“生产”设置为一个值。在你的笔记本电脑上,它可能没有任何东西,因为你只是在测试、玩它,等等。但生产环境非常重要,因为这是你的应用程序用户可以看到和使用你的应用程序的地方。根据Express.js文档,“将NODE_ENV设置为“生产”使快速缓存视图模板;缓存从CSS扩展生成的CSS文件;并生成较少详细的错误消息。“Ref:它回答了您的问题,还是我应该进一步澄清?是的,这回答了我的问题,谢谢。我还想为那些在将来看到这个问题的人补充一下,我发现(自2015年以来)Heroku将Node.js应用程序设置为默认使用Node_ENV=production。谢谢你的回答。我理解该代码的作用,但我的问题更多的是process.env何时设置为NODE_env(何时设置为false或未设置)。为了清晰起见,编辑了这个问题。因此,这个环境变量(即,
NODE_ENV
)被定义为某些计算机中的环境变量(例如,云上某处的VM,如Heroku)。在云上,它可能会将“生产”设置为一个值。在你的笔记本电脑上,它可能没有任何东西,因为你只是在测试、玩它,等等。但生产环境非常重要,因为这是你的应用程序用户可以看到和使用你的应用程序的地方。根据Express.js文档,“将NODE_ENV设置为“生产”使快速缓存视图模板;缓存从CSS扩展生成的CSS文件;并生成较少详细的错误消息。“Ref:它回答了您的问题,还是我应该进一步澄清?是的,这回答了我的问题,谢谢。我还想为那些在将来看到这个问题的人补充一点,我发现(自2015年以来)Heroku将Node.js应用程序设置为使用Node_ENV=production