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

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是读取的哪个文件?
莫回无
浏览 2914回答 2
2回答

叮当猫咪

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

天涯尽头无女友

阅读webpack4官网文档Mode,里面提到Ifnotset,webpacksetsproductionasthedefaultvalueformode.Thesupportedvaluesformodeare:如果没有设置mode值,默认mode值为"production"。设置process.env.NODE_ENV还能通过mode值读取。测试下来貌似最终读取的是mode的值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript