nodejs学习之process.env.NODE_ENV

news2024/12/23 9:28:04

简介

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在win10上通过WSL和docker安装Ubuntu子系统,并配置Ubuntu可成功使用宿主机GPU

本文主要记录win10系统上,通过WSL的Ubuntu系统以及Docker使用GPU的全部过程。 文章目录 1、 启用hyper-v2、 安装docker3、 安装WSL3.1 安装WSL23.1.1 检查是否安装了WSL23.1.1 安装和配置 WSL 23.2 安装Ubuntu 子系统3.3 检查并修改WSL版本4、docker配置ubuntu20.04 LTS5、下…

linux系统下,matplotlib无法显示中文字体的解决办法

1.查看自己系统是否安装了中文字体 看是否有这个目录,如果没有的话,则进行安装 2.安装中文的字体 sudo apt-get install ttf-wqy-zenhei3.测试matplotlib进行显示中文字体 from matplotlib.font_manager import FontProperties font FontProperties…

什么?突降福利假日——Windows全球蓝屏!

在科技界,任何大型软件公司的产品出现问题都可能成为头条新闻,而当这个问题是“蓝屏死机”(Blue Screen of Death, BSOD),并且影响范围覆盖全球时,其影响力更是无法估量。 近日,微软公司就经历了一场史无前例的全球性蓝屏事件,这一事件不仅考验了微软的技术应对能力,也…

员工泄密公司资料起诉有用吗或者用什么软件管控防止

员工泄密公司资料时,公司采取法律行动起诉员工确实是一种有效的应对方式,尤其是当泄密行为对公司造成了显著的经济或名誉损失时。 因为法律有专门的条款规定。 法律界定 民事责任 当员工泄密对公司造成经济损失时,公司可以依据《中华人民共…

pytorch的17个Loss和10个优化函数

pytorch的17个Loss和10个优化函数 一、 17个Loss 函数二、10个优化器 一、 17个Loss 函数 二、10个优化器 开始:

C#定时发送邮件功能

C#定时发送邮件功能 背景 自动运维监控客户端在自动关闭时,需要给实施同学发送提醒邮件。支持163邮箱、qq邮箱、火狐邮箱等各种通用邮箱。 定时器发送邮件 代码 邮件功能模块 using ITSLog.LogManage; using System; using System.Collections.Generic; using…

FLINK-运行架构

为什么要学习Flink运行架构? 虽然现在大厂的开发工具都非常高效、只需要进行参数配置、Flink-sql写业务逻辑,但是在资源配置逻辑优化上不可避免需要了解底层的组件配置。面试时可能也会被问到FLINK是如何进行资源分配、作业运行的等。 以下是在学习时记录…

【一刷《剑指Offer》】面试题 34:丑数

力扣对应题目链接:264. 丑数 II - 力扣(LeetCode) 牛客对应题目链接:丑数_牛客题霸_牛客网 (nowcoder.com) 一、《剑指Offer》对应内容 二、分析题目 根据题意,每个丑数都可以由其他较小的丑数通过乘以 2 或 3 或 5 …

C++字体库开发之fontconfig使用五

代码 #include <cassert> #include <algorithm> #include "fontconfig/fontconfig.h" #include <stdexcept> #include <iostream>#define HAS_FALLBACK_CONFIGURATIONenum FontStyle : uint16_t {Regular 0,Italic 0x01,Bold 0x02, };en…

如何在 Mac 上恢复丢失或删除的文件

也许您放错了 Mac 上的某个文件&#xff0c;或者永久删除了现在需要的文件。根据您丢失或删除文件的时间&#xff0c;有多种方法可以恢复 MacOS 上的项目。 我们从最快、最简单的方法开始&#xff0c;然后逐渐采用更耗时或更昂贵的方法来恢复 Mac 上的文件、文件夹和其他项目。…

MySQL添加索引时会锁表吗?

目录 简介Online DDL概念Online DDL用法总结 简介 在MySQL5.5以及之前的版本&#xff0c;通常更改数据表结构操作&#xff08;DDL&#xff09;会阻塞对表数据的增删改操作&#xff08;DML&#xff09;。 MySQL5.6提供Online DDL之后可支持DDL与DML操作同时执行&#xff0c;降低…

CentOS 7 yum官方源失效

问题 2024年7月&#xff0c;官方对centos 7停止了维护&#xff0c;yum的源网址mirror.centos.org也已经无法访问。 在此情况下&#xff0c;无法正常使用yum进行安装和更新工具。 在尝试了更换阿里源之后&#xff0c;仍然有部分工具库无法访问。 通用解决方案 1. 打开/etc/y…

react页面指定dom转pdf导出

1. 使用jsPDFhtml2canvas将页面转成图片然后导出2. 自定义创建iframe调用iframe.print()进行页面打印转pdf导出3. 使用react-to-print插件打印pdf4. 利用media print样式打印页面局部元素 1. 使用jsPDFhtml2canvas将页面转成图片然后导出 缺点&#xff1a;页面过长可能会导出失…

SwarmBrain: 通过大模型玩实时战略游戏《星际争霸II》

人工智能咨询培训老师叶梓 转载标明出处 实时战略&#xff08;RTS&#xff09;游戏如《星际争霸II》一直被视为测试和提升AI能力的绝佳平台。尽管基于强化学习&#xff08;RL&#xff09;的AI代理在《星际争霸II》中取得了显著进展&#xff0c;但它们在处理复杂环境时仍面临挑战…

SpringBoot、SpringCloud、SpringCloud Alibaba版本对应关系

1. 概述 随着SpringBoot和SpringCloud的发展&#xff0c;有些服务进入停更运维状态&#xff0c;一些新的框架出现&#xff0c;在开发微服务的时候不同组件的版本对应关系也是不可忽视的问题&#xff0c;如果版本不对应&#xff0c;可能会出现很多莫名的错误&#xff0c;给开发…

5G mmWave PAAM 开发平台

Avnet-Fujikura-AMD 5G 毫米波相控阵天线模块开发平台 Avnet 和 Fujikura 为毫米波频段创建了一个领先的 5G FR2 相控阵天线开发平台。该平台使开发人员能够使用 AMD Xilinx 的 Zynq UltraScale™ RFSoC Gen3 和 Fujikura 的 FutureAcess™ 相控阵天线模块 (PAAM) 快速创建和制…

AI周报(7.14-7.20)

AI应用-本届欧洲杯的AI技术应用 卢卡库在两场比赛中共有三次庆祝进球的情况&#xff0c;但遗憾的是这三次庆祝均未能转化为有效的进球。这种“吐饼王”的表现也让他成为了本届欧洲杯的一个另类焦点人物。虽然稍显悲情&#xff0c;但有了AI的深度应用&#xff0c;即使这样极端的…

震惊,搜索二叉树告诉我们不要生二胎?本篇(带图)让你轻松拿下

引子&#xff1a; 二叉树作为一种常见的一种数据结构,我们也经常使用&#xff0c;有以下几种类型&#xff1a;满二叉树&#xff08;Full Binary Tree&#xff09;&#xff1a;所有节点都恰好有两个子节点或没有子节点。完全二叉树&#xff08;Complete Binary Tree&#xff09…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十六章 Linux驱动初探

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)

Python list comprehension {列表推导式 - 列表解析式 - 列表生成式} 1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)2. Example3. ExampleReferences Python 中的列表解析式并不是用来解决全新的问题&#xff0c;只是为解决已有问题提供新的语法。 列…