当前位置: 首页 > news >正文

nodejs学习之process.env.NODE_ENV

简介

process对象是 Node 的一个全局对象,提供当前 Node 进程的信息。它可以在脚本的任意位置使用,不必通过require命令加载。该对象部署了EventEmitter接口。
process.env 属性返回包含用户环境的对象

使用

pnpm init

新建index.js

const { env } = require('node:process');console.log(env.NODE_ENV)
env.NODE_ENV = 'dev';
console.log(env.NODE_ENV);

修改package.json

{"name": "nodejslibstu04","version": "1.0.0","description": "","main": "index.js","scripts": {"dev": "node index.js"},"keywords": [],"author": "","license": "ISC"
}

运行项目,可以看到默认是没有NODE_ENV环境变量的需要自己设置
在这里插入图片描述
修改dev配置

# window配置
"dev": "set NODE_ENV=development && node index.js"
# linux
"dev": "NODE_ENV=development node index.js"

cross-env

由于需要每个环境都得配置,所以cross-env出现了cross-env 能够提供一个设置环境变量的scripts,这样我们就能够以unix方式设置环境变量,然后在windows上也能够兼容。

pnpm add -D cross-env --registry http://registry.npm.taobao.org

修改package.json

"scripts": {"dev": "cross-env NODE_ENV=development node index.js"
},

cross-env 仍然运行良好,但处于维护模式。 不会添加任何新功能,只会修复严重和常见的错误,而且随着时间的推移,它只会与 Node.js 保持同步。

dotenv

如果需要配置的环境变量太多,全部设置在scripts命令中既不美观也不容易维护,此时将环境变量配置在.env文件中,然后使用dotenv插件来加载.env配置文件。

pnpm add -D dotenv --registry http://registry.npm.taobao.org

新建.env

NODE_ENV = development
# 这是注释
API_URL = https://abc.com

修改index.js

//import 'dotenv/config'
require('dotenv').config()
const { env } = require('node:process');console.log(env.NODE_ENV)
env.NODE_ENV = 'dev';
console.log(env.NODE_ENV);

修改package.json

 "dev": "node index.js"

在这里插入图片描述

cross-env结合dotenv实现根据环境加载对应的配置

新建.env.development

API_URL = http://localhost:5000

新建.env.production

API_URL = http://www.baidu.com

修改index.js

const dotenv = require('dotenv');
const { env } = require('node:process');
const fs = require('fs');
const path = require('path');console.log(env.NODE_ENV)const envFilePath = `.env.${env.NODE_ENV || 'production'}`;// 检查文件是否存在
if (fs.existsSync(path.resolve(envFilePath))) {// 加载环境变量dotenv.config({ path: envFilePath });
} else {console.error(`环境文件 ${envFilePath} 不存在,请检查 NODE_ENV 变量或环境文件命名。`);
}
dotenv.config();
console.log(env.API_URL)

修改package.json

 "scripts": {"default": "node index.js","dev": "cross-env NODE_ENV=development node index.js","prod": "cross-env NODE_ENV=production node index.js"},

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以新建.env,添加环境变量即可,就不用cross-env了
在这里插入图片描述

参考

https://www.npmjs.com/package/cross-env
https://github.com/kentcdodds/cross-env
https://juejin.cn/post/7070347341282148365
https://javascript.ruanyifeng.com/nodejs/process.html#toc0
https://github.com/motdotla/dotenv
https://www.npmjs.com/package/config

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • conda 环境打包与使用
  • 2024.7.19最新详细的VMware17.0.0安装
  • Andriod Stdio新建Kotlin的Jetpack Compose简单项目
  • wps office 2019 Pro Plus 集成序列号Vba安装版教程
  • 百日筑基第二十四天-23种设计模式-结构型总汇
  • Vue Promise 必须在外层,放到其它比如ElMessageBox,将不会返回任何值
  • 服务器证书基于 OpenSSL一键颁发脚本
  • 微软Edge浏览器全解析教程
  • Linux下如何安装配置Graylog日志管理工具
  • C++基础语法:STL之容器(5)--序列容器中的list(二)
  • C++ AVL树
  • 生活中生智慧
  • 《昇思25天学习打卡营第21天|Pix2Pix实现图像转换》
  • c++ extern 关键字
  • 提高自动化测试脚本编写效率 5大关键注意事项
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 5、React组件事件详解
  • Angular 响应式表单之下拉框
  • emacs初体验
  • Github访问慢解决办法
  • IP路由与转发
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Koa2 之文件上传下载
  • k个最大的数及变种小结
  • Less 日常用法
  • Python 反序列化安全问题(二)
  • spring + angular 实现导出excel
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • VUE es6技巧写法(持续更新中~~~)
  • 给github项目添加CI badge
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 手机端车牌号码键盘的vue组件
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 最近的计划
  • 7行Python代码的人脸识别
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 我们雇佣了一只大猴子...
  • #include到底该写在哪
  • #nginx配置案例
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (42)STM32——LCD显示屏实验笔记
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (ZT)出版业改革:该死的死,该生的生
  • (补)B+树一些思想
  • (二)fiber的基本认识
  • (四)Linux Shell编程——输入输出重定向
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (五)MySQL的备份及恢复