为了账号安全,请及时绑定邮箱和手机立即绑定

process.env.NODE_ENV 在浏览器下和 node 环境下读取的是哪个文件设置的值?

process.env.NODE_ENV 在浏览器下和 node 环境下读取的是哪个文件设置的值?

莫回无 2019-05-09 09:55:53
process对象是node的全局变量,提供当前Node进程的信息。process.env属性返回一个对象,包含当前shell的所有环境变量在webpack里面,我们常常新建一个环境变量NODE_ENV,用来判断所处的是开发环境|生产环境|测试环境我的问题是,通常大家设置NODE_ENV这个变量在哪设置?1.package.json文件里可以设置为"dev":"cross-envNODE_ENV=developmentwebpack-dev-server--inline--progress--configbuild/webpack.dev.conf.js","build":"cross-envNODE_ENV=productionwebpack--configbuild/webpack.prod.conf.js",2.也可以在webpack文件下的配置文件config里面设置module.exports={build:{env:{NODE_ENV:'"production"'}},dev:{env:{NODE_ENV:'"development"'}}}那么在build文件夹下的比如webpack.dev.conf.js文件里(node环境?)读取process.env.NODE_ENV是读取的那个文件定义的NODE_ENV值呢?以及在src下某个文件里(浏览器环境?)读取process.env.NODE_ENV是读取的哪个文件?
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

首先楼主明白的,process.env是Node环境的定义的变量,浏览器环境肯定是返回undefined的。1,首先怎样让Node去识别当前运行的是哪个变量,是“development”还是“production”,这个是通过cross-env来定义的。它是一个跨平台的(windowsormaxosorliunx),识别当前运行的环境变量的工具。当然去查看下它的文档说明,更直观。
2,怎样让浏览器去识别当前运行的环境变量呢?其实webpack有个插件,就是webpack.DefinePlugin
newwebpack.DefinePlugin({
//process.env这个就会被浏览器环境所识别
'process.env':require('./config/dev.env')
}),
所以浏览器才会认识process.env.NODE_ENV
如有帮助,麻烦点击下采纳,谢谢~
                            
查看完整回答
反对 回复 2019-05-09
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

阅读webpack4官网文档Mode,里面提到
Ifnotset,webpacksetsproductionasthedefaultvalueformode.Thesupportedvaluesformodeare:
如果没有设置mode值,默认mode值为"production"。设置process.env.NODE_ENV还能通过mode值读取。测试下来貌似最终读取的是mode的值
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 2913 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信