process.env何时设置为NODE_env



我不得不将此代码添加到我的项目中,该项目将Express作为后端,React作为前端,以便部署到Heroku(以及一些其他调整,如heroku-postbuild字段(。我是Express/Node和read process.env的新手。env是Node环境,但只检查它是否存在/设置为true意味着什么?我看到人们使用它来将process.env.NODE_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(。

CCD_ 7内的CCD_。,http://localhost/*)。

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

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

根据Express.js的文档,"将NODE_ENV设置为"production"将使Express缓存视图模板;缓存由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=生产。参考编号:https://devcenter.heroku.com/changelog-items/688

最新更新