当前位置:网站首页>process.env.NODE_ENV
process.env.NODE_ENV
2022-07-01 15:43:00 【黑猫几绛】
一、process.env
查阅文档的时候可以看到这样一句话:process
对象提供有关当前 Node.js 进程的信息并对其进行控制。
const process = require('node:process');
在计组的知识点中我们知道:process(进程)是系统进行资源分配和调度的基本单位,是操作系统结构的基础。那么,在node.js中,process
是否也有操作系统结构的信息呢?
打印一下看看:
const process = require('process')
const express = require('express')
const app = express()
app.get('/',(req,res)=>{
console.log(process);
})
app.listen(port, host)
访问localhost:3000
后查看控制台:
可以看到,process
代表的值是计算机系统相关的信息,而process.env
则表示的是系统环境变量。
理解:process
可以看作是node.js中的一个全局变量。
二、NODE_ENV
注意:我本来想在文档中找找这个属性的,可是它并不存在于文档中,这是因为,NODE_ENV
仅仅是一个自定义变量,据说最早是express
社区中流传这个自定义变量,后来慢慢就成为了前端开发中的一个使用规范。
注意看上面那一张图片中框起来的部分,为什么会加上这个环境变量呢?
这是因为:在开发的过程中,我们可能需要同时面临多种环境。比如:
- 开发:API_URL =Ihttp://127.0.0.1:3000
- 线上部署环境:API_URL =https://imNeko:3000
这也是为什么,有时候我们在开发的时候感觉代码项目没有问题,可是部署到线上时出现了差错。
在这里我以一个基于Nuxt.js的项目中的package.json
来举例:
"scripts": {
// 让 cross-env 把 NODE_ENV 设置为 development, 再运行指定文件 server/index.js
"dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
"build": "nuxt build",
"start": "cross-env NODE_ENV=production node server/index.js",
"generate": "nuxt generate"
},
从上面的代码可以看出:
当我们执行npm run dev
的时候,NODE_ENV
将会被注入到 process.env
对象上,并且值为 development
,我们 只
可以在 server/index.js
脚本中以及它所引入的脚本中访问到 process.env.NODE_ENV
,而无法在其它脚本中访问
不过,如果采用的是webpack打包方式,注册下面这个插件既可以让其他文件访问到process.env.NODE_ENV
const webpack = require('webpack');
module.exports = {
// ...
plugins: [
// DefinePlugin允许我们创建全局变量,可以在编译时进行设置
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"development"'
})
]
// ...
}
现在看看如何在项目中切换环境变量:
let env = process.env.NODE_ENV
let cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap)
let cssSourceMapProduct = (env === 'production' && config.build.productionSourceMap)
let useCssSourceMap = cssSourceMapDev || cssSourceMapProduct
我们可以根据process.env.NODE_ENV
的值来选择编译打包什么文件。
2.1 设置NODE_ENV
2.1.1临时设置
在cmd窗口中输入这段代码:
set NODE_ENV = production
// set NODE_ENV = development
然后打印process
:
2.1.2永久设置
在系统环境变量下面手动添加即可。
边栏推荐
- 《QT+PCL第六章》点云配准icp系列2
- Équipe tensflow: Nous ne sommes pas abandonnés
- Photoshop plug-in HDR (II) - script development PS plug-in
- Some abilities can't be learned from work. Look at this article, more than 90% of peers
- Phpcms background upload picture button cannot be clicked
- 张驰咨询:锂电池导入六西格玛咨询降低电池容量衰减
- 【目标跟踪】|STARK
- 最新NLP赛事实践总结!
- Rhcsa fourth day operation
- Create employee data in SAP s/4hana by importing CSV
猜你喜欢
Reading notes of top performance version 2 (V) -- file system monitoring
自動、智能、可視!深信服SSLO方案背後的八大設計
微信小程序01-底部导航栏设置
Pnas: brain and behavior changes of social anxiety patients with empathic embarrassment
Raytheon technology rushes to the Beijing stock exchange and plans to raise 540million yuan
Survey of intrusion detection systems:techniques, datasets and challenges
[stm32-usb-msc problem help] stm32f411ceu6 (Weact) +w25q64+usb-msc flash uses SPI2 to read out only 520kb
七夕表白攻略:教你用自己的专业说情话,成功率100%,我只能帮你们到这里了啊~(程序员系列)
For the sustainable development of software testing, we must learn to knock code?
u本位合约和币本位合约有区别,u本位合约会爆仓吗
随机推荐
Pico,能否拯救消费级VR?
Don't ask me again why MySQL hasn't left the index? For these reasons, I'll tell you all
STM32ADC模拟/数字转换详解
三星率先投产3nm芯片,上海应届硕士生可直接落户,南开成立芯片科学中心,今日更多大新闻在此...
硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件
自動、智能、可視!深信服SSLO方案背後的八大設計
u本位合约和币本位合约有区别,u本位合约会爆仓吗
采集数据工具推荐,以及采集数据列表详细图解流程
摩根大通期货开户安全吗?摩根大通期货公司开户方法是什么?
【目标跟踪】|STARK
Preorder, inorder, follow-up of binary tree (non recursive version)
有些能力,是工作中学不来的,看看这篇超过90%同行
Go zero actual combat demo (I)
Summary of point cloud reconstruction methods I (pcl-cgal)
Short Wei Lai grizzly, to "touch China" in the concept of stocks for a living?
For the sustainable development of software testing, we must learn to knock code?
跨平台应用开发进阶(二十四) :uni-app实现文件下载并保存
TensorFlow团队:我们没被抛弃
STM32F1与STM32CubeIDE编程实例-PWM驱动蜂鸣器生产旋律
Pocket Network为Moonbeam和Moonriver RPC层提供支持