Node.js env 环境变量多种配置方式

 

目录

process.env

配置方式

dotenv 使用

cross-env


process.env

在 Node.js 中,你可以使用 process.env 对象来读取环境变量。这个对象包含了所有的环境变量,你可以通过变量名来访问这些变量的值。

例如,如果你有一个名为 MY_VARIABLE 的环境变量,你可以这样读取它的值:

const myVariable = process.env.MY_VARIABLE;
console.log(myVariable);

这将打印出 MY_VARIABLE 环境变量的值。

注意,环境变量的名称是大小写敏感的,所以在访问环境变量时,你需要确保变量名的大小写与环境变量的大小写完全一致。

配置方式

process.env 中的环境变量来自于操作系统的环境变量。在 Node.js 中,你可以通过 process.env 对象来访问这些环境变量。这些环境变量通常是在启动 Node.js 进程时设置的,可以通过以下方式设置:

  1. 在操作系统级别设置

    • 在 Unix/Linux 系统中,可以在 shell 中使用 export 命令来设置环境变量。例如:

      export MY_VARIABLE=value
    • 在 Windows 系统中,可以通过控制面板或者命令行来设置环境变量。例如:

      set MY_VARIABLE=value
  2. 在应用程序启动时设置

    • 在 Node.js 应用程序中,可以在启动时通过命令行参数或者脚本文件来设置环境变量。例如:

      MY_VARIABLE=value node app.js

      或者在 package.json 文件中设置:

      {"scripts": {"start": "MY_VARIABLE=value node app.js"}
      }
  3. 在应用程序代码中设置

    • 在 Node.js 应用程序中,可以使用 process.env 对象来设置环境变量。例如:

      process.env.MY_VARIABLE = 'value';

通过以上方式设置的环境变量,都可以通过 process.env 对象来访问。例如:

console.log(process.env.MY_VARIABLE); // 输出 'value'

请注意,环境变量的名称通常是大写的,以区分于其他变量。在设置和访问环境变量时,大小写敏感。

dotenv 使用

dotenv 是一个 Node.js 库,它允许你将环境变量从一个 .env 文件加载到 process.env 中。这样做的好处是,你可以在代码中使用这些环境变量,而不必硬编码它们,并且可以在不同的环境(如开发、测试、生产)中轻松切换这些环境变量。

dotenv 库的原理如下:

  1. 安装:首先,你需要在你的 Node.js 项目中安装 dotenv 库。你可以使用 npm(Node Package Manager)来安装它:

    npm install dotenv
  2. 创建 .env 文件:在你的项目根目录下创建一个 .env 文件,并在其中定义你的环境变量。例如:

    DB_HOST=localhost
    DB_USER=root
    DB_PASS=s1mpl3
  3. 加载 .env 文件:在你的 Node.js 应用程序中,使用 require('dotenv').config() 来加载 .env 文件。这通常在你的应用程序的入口文件(如 app.js 或 server.js)中完成。例如:

    require('dotenv').config();
  4. 使用环境变量:现在,你可以在你的代码中使用 process.env 对象来访问这些环境变量。例如:

    const dbHost = process.env.DB_HOST;
    const dbUser = process.env.DB_USER;
    const dbPass = process.env.DB_PASS;
  5. 环境变量的优先级dotenv 加载的环境变量会覆盖任何已经存在于 process.env 中的同名变量。这意味着,如果你的操作系统中已经设置了 DB_HOST 环境变量,那么 dotenv 加载的值将覆盖它。
  6. 忽略文件:默认情况下,dotenv 会加载 .env 文件。如果你想忽略某个 .env 文件,可以创建一个 .env.example 文件,并在其中列出所有的环境变量,但不提供任何值。这样,其他开发者就可以根据这个文件创建自己的 .env 文件,而不会覆盖已经存在的环境变量。
  7. 加载特定环境的 .env 文件dotenv 允许你根据当前的环境(如 developmenttestproduction)加载不同的 .env 文件。例如,你可以有 .env.development.env.test 和 .env.production 文件,然后在你的应用程序中根据需要加载相应的文件。

    require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` });

通过使用 dotenv,你可以轻松地管理和使用环境变量,而不必担心它们会泄露到版本控制系统中。

cross-env

在大多数 Unix-like 系统(如 Linux 和 macOS)中,你可以直接在命令行中设置环境变量并运行 Node.js 应用程序,而不需要使用 cross-env。例如,你可以使用以下命令:

NODE_ENV=production node app.js

这将在当前 shell 会话中设置 NODE_ENV 环境变量为 production,然后启动 app.js 文件。

然而,如果你在 Windows 系统上运行上述命令,它可能不会按预期工作,因为 Windows 的命令行语法与 Unix-like 系统不同。在 Windows 中,你需要使用 set 命令来设置环境变量,然后启动 Node.js 应用程序:

set NODE_ENV=production
node app.js

或者,你可以使用 cross-env 库来在 Windows 上设置环境变量,因为 cross-env 是一个跨平台的工具,它会根据操作系统自动选择正确的命令。

如果你不想使用 cross-env,并且你的应用程序只在 Unix-like 系统上运行,那么直接使用 NODE_ENV=production node app.js 命令是完全可以的。然而,如果你需要在 Windows 上运行应用程序,你应该使用 set 命令或者 cross-env

如果你在 Windows 上使用 cross-env,它会自动检测你的操作系统并使用适当的命令来设置环境变量。这样做的好处是,你的代码可以在不同的操作系统上运行,而无需修改。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kali或Debian系统安装JDK1.8保姆级教程

一、下载JDK1.8 先到Oracle的官网下载JDK1.8 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/Java Archive Downloads - Java SE 8

CUDA、Pytorch、Pycharm的安装与配置

文章目录 一、CUDA安装1.检查英伟达驱动支持的最高CUDA版本 二、Pytorch的安装与环境配置1.选择是下载CPU版本还是GPU版本2.上Pytorch官网找到安装命令3.运行指令(1)CPU版本(2)GPU版本 4.验证5.安装其他所需模块(0)安装torch(1)安装Matplotlib(2)安装 pillow(可能an…

OSPF的不规则区域

1.远离骨干非骨干区域 2.不连续骨干 解决方案 tunnel ---点到点GRE 在合法与非ABR间建立隧道,然后将其宣告于OSPF协议中; 缺点:1、周期和触发信息对中间穿越区域造成资源占用(当同一条路由来自不同区域,路由器会先…

javaScript基础(8个案例+代码+效果图)

目录 1.js常用的输出语句 案例:js初体验 1.代码 2.效果 2.js命名规则 3.js赋值 var 关键字声明变量 案例:交换两个变量的内容 完整代码 效果 4.js数据类型 布尔类型 整数 浮点数 字符串 空型 未定义型 5. 数据检测 6.算术运算符 7.比较运算符 案例:计算圆周长和面积 1.代码 2.…

【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升

各位好,今天小编给大家带来一款新的高清重置MOD,本次高清重置的游戏叫《重返德军总部2009》2009年发布,我相信很多玩家已经玩过了,如果你还没有玩过我也可以和你简单介绍一下剧情,这款游戏故事背景接续在《重返德军总部…

Cilium-实战系列-(一)Cilium-安装与部署

前言: 1、首先说一下这篇实战系列和Cilium-ebpf系列文章为 “一文一武”,一个注重点解,一个注重实际操作。 Cilium ebpf 系列文章-什么是ebpf?(一)_clium ebpf-CSDN博客文章浏览阅读419次。一、We Create a containe…

ElasticSearch备考 -- Multi field

一、题目 Create the index hamlet_2 with one primary shard and no replicas Copy the mapping of hamlet_1 into hamlet_2, but also define a multi-field for speaker. The name of such multi-field is tokens and its data type is the (default) analysed string Reind…

[git] github管理项目之环境依赖管理

导出依赖到 requirements.txt pip install pipreqs pipreqs . --encodingutf8 --force但是直接使用pip安装不了torch,需要添加源!! pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.htmlpython 项目中 …

基于VirtualBox和Ubuntu的虚拟环境搭建

VirtualBox简介 VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用,可虚拟的系统包括Windows&…

JavaScript-下篇

上篇我们学习了,一些基础语法和函数,现在我们学习下篇,主要包括,对象和事件。而对象又包括,数组Arrays,String字符串,BOM,DOM等 JS对象 Arrays数组 数组是一种特殊的对象,用于存储…

子比主题美化 – 添加天气教程

前言 经常看到很多的网站顶部或者侧边有显示天气状态的小条幅,看着也美观,寻思着也在自己的小站上显示天气。大体的思路是能识别用的ip地址来确认位置然后以代码形式在前台显示出。 经过在百度上搜索一番,发现一个很不错的天气api&#xff…

Java之二叉树的基本操作实现

1. 模拟实现二叉树前,我们要先表示树,首先定义一个内部类,当作二叉树节点 static class TreeNOde{char val;//存放二叉树的值TreeNOde left;//指向左子树的引用TreeNOde right;//指向右子树的引用//构造方法,用于实例化树的节点p…

Luminar财务造假风波:激光雷达龙头的困境与挑战

近日,美国激光雷达上市公司Luminar被爆出财务造假嫌疑,这一消息震惊了整个行业。Luminar,这家曾风光无限的激光雷达公司,最高市值一度达到120亿美元,其年轻的创始人也因此坐拥豪宅豪车无数。然而,如今在市值仅剩5亿美元左右的时候,却被爆出如此丑闻,令人不禁唏嘘。 带…

成都睿明智科技有限公司抖音电商新蓝海的领航者

在当今这个数字化浪潮汹涌的时代,电商行业正以惊人的速度迭代升级,而抖音电商作为新兴势力,更是凭借其庞大的用户基数、精准的算法推荐和高度互动的社区氛围,成为了众多商家竞相追逐的蓝海市场。在这片充满机遇与挑战的海洋中&…

洛谷每日一题(P1205 [USACO1.2] 方块转换 Transformations)矩阵变换

原题目链接: P1205 [USACO1.2] 方块转换 Transformations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题目截图: 思路分析: 这题目还是比较简单,模拟一下旋转变化的过程,然后注意变换的规律就行了。 读取输入…

【移动端】事件基础

一、移动端事件分类 移动端事件主要分为以下几类: 1. 触摸事件(Touch Events) 触摸事件是移动设备特有的事件,用来处理用户通过触摸屏幕进行的操作。主要的触摸事件有: touchstart:手指触摸屏幕时触发。…

我的项目管理生涯

1 前言 从好几年前就想写几篇关于自己职业生涯的文章了,一直由于各种原因没有写成,正好借新的工作机会,尤其是项目管理这段工作经历,计划通过这一二篇文章进行总结和反思一下,以期更顺利的开展相关工作或是自己能更上…

ad.concat()学习

学习1 import anndata as ad, pandas as pd, numpy as np from scipy import sparse a ad.AnnData(Xsparse.csr_matrix(np.array([[0, 1], [2, 3]])),obspd.DataFrame({"group": ["a", "b"]}, index["s1", "s2"]),varpd.D…

import torch报错问题:OSError: [WinError 126] 找不到指定的模块。

今天在python中导入import torch时&#xff0c;发生了报错。 import torch File "D:\python\Lib\site-packages\torch\__init__.py", line 148, in <module>raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\python\Lib\site-pac…

【PACS源码】C#.net医学影像管理系统源码,支持CT、MR、CR、DR、ECT、DSA、X光机、超声、内镜、病理等多种设备。

PACS医学影像管理与传输系统软件可对医学仪器输出的视频信号进行接收、处理、存储、报告输出、管理、查询等&#xff0c;并支持网络&#xff0c;实现资源共享。为医院对病人信息资料进行数字化、科学化、网络化管理提供了必要的工具。 基于DICOM标准的PACS医学影像管理系统&am…