首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >process.env何时设置为NODE_ENV?

process.env何时设置为NODE_ENV?
EN

Stack Overflow用户
提问于 2019-11-19 17:20:19
回答 1查看 1.4K关注 0票数 0

我必须将此代码添加到以Express作为后端并作为前端进行响应的项目中,以便部署到Heroku (以及其他一些调整,如heroku-postbuild字段)。我对Express/Node很陌生,我读过process.env是Node环境,但是仅仅检查它是否存在/设置为true意味着什么呢?我看到人们使用它将process.env.NODE_ENV设置为开发或生产,但不熟悉这种用法。

代码语言:javascript
复制
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'));
  });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-19 17:30:48

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

* in app.get()是一个通配符,它匹配用户可以为该服务器输入浏览器的任何路由(即http://localhost/*)。

所以它所做的是,如果NODE_ENV设置为某种东西(不一定是开发或生产环境),那么对于请求的任何路由(或站点上的任何网页),您都要将client/build/index.html文件发回--基本上呈现网站的索引(主)页面。

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

根据Express.js文档,“将CSS设置为”NODE_ENV“可以使NODE_ENV缓存视图模板;缓存从CSS扩展名生成的CSS文件;并生成较少冗长的错误消息。”参考文献:https://expressjs.com/en/advanced/best-practice-performance.html

我的猜测是,它在Heroku上发送此index.html文件,并在不发送时执行其他操作(取决于定义的路由)。

此链接也可能有所帮助:https://dev.to/flippedcoding/difference-between-development-stage-and-production-d0p

P.S. Natalie指出,自2015年以来,Heroku将Node.js应用程序设置为默认使用NODE_ENV=production。参考文献:https://devcenter.heroku.com/changelog-items/688

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58939600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档