vue3+vite项目中使用.env文件环境变量方法

news2025/6/12 17:11:42

vue3+vite项目中使用.env文件环境变量方法

  • .env文件作用
  • 命名规则
  • 常用的配置项示例
  • 使用方法
  • 注意事项
  • 在vite.config.js文件中读取环境变量方法

.env文件作用

  • .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。
  • Vite 会自动加载这些环境变量,并在构建时将它们替换为实际值。
  • 必须在项目根目录下创建,跟src目录同级。注意:如果 .env 文件与 src 不在同一级目录下,放在了其他目录,需要在 vite.config.js 文件中配置 .env 文件所在的路径,配 envDir 的值即可。例如:我放在 envConfig 目录中,配置方法如下:
    在这里插入图片描述

命名规则

  • .env:所有环境都会加载的文件。
  • .env.development:仅在开发环境加载。
  • .env.production:仅在生产环境加载。
  • .env.test:仅在测试环境加载。

常用的配置项示例

  • NODE_ENV:指定当前的 Node.js 运行环境,常见值为 development(开发环境)、production(生产环境)和 test(测试环境)。
  • VITE_APP_MODE:自定义的应用模式,可以根据需要设置不同的模式。
  • VITE_APP_ROUTER_BASE:单页应用的基路径。如果应用部署在非根路径下(如 /app/),需要将此值设置为对应路径。
  • VITE_APP_PUBLIC_URL:静态文件的基路径。确保静态资源(如图片、字体等)能够正确加载。
  • VITE_APP_API_BASE_URL:API 请求的基准 URL。确保前端请求能够正确发送到后端服务。
  • VITE_APP_PURE_CONSOLE:是否删除代码中的 console.log 语句。0 表示不启用,1 表示启用。
  • VITE_APP_DROP_DEBUGGER:是否删除代码中的 debugger 语句。0 表示不启用,1 表示启用。
  • VITE_APP_BUNDLE_ANALYZE:是否启用打包体积分析插件。0 表示不启用,1 表示启用。

使用方法

  • 在项目中可以通过 import.meta.env.xxxx 来访问这些环境变量
console.log(import.meta.env.VITE_APP_API_BASE_URL)
  • 在package.json文件中的scripts下原来的build命令后加 --mode {对应环境}
  • 例如:
"build:development": "vue-tsc --noEmit && vite build --mode development",
"build:test": "vue-tsc --noEmit && vite build --mode test",
"build:production": "vue-tsc --noEmit && vite build --mode production",

在build的时候有时可能会遇到环境设置的不生效,提示内容:
NODE_ENV=production is not supported in the .env file. Only NODE_ENV=development is supported to create a development build of your project.
If you need to set process.env.NODE_ENV, you can set it in the Vite config instead.
出现这个问题可能的原因是环境配置中出现了错误的配置,添加了NODE_ENV=production,去掉NODE_ENV=production这项配置即可。
在这里插入图片描述

  • npm run serve 的时候默认加载 .env.development文件
  • npm run build 的时候默认加载 .env.production文件

注意事项

  • 变量前缀:只有以 VITE_ 开头的变量才会被 Vite 替换并暴露给客户端代码。这是为了防止意外暴露敏感信息。
  • 敏感信息:不要在 .env 文件中存储敏感信息(如 API 密钥、数据库密码等)。这些信息应该通过更安全的方式进行管理。
  • .gitignore:确保 .env 文件被添加到 .gitignore 中,避免将敏感信息提交到版本控制系统中。

在vite.config.js文件中读取环境变量方法

  • 从vite包中导入loadEnv
import { defineConfig, loadEnv } from 'vite'
  • 在defineConfig之前调用loadEnv,传入模式(mode)、基础目录和一些选项
import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vite.dev/config/
export default defineConfig(({ mode }) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd(), '')

  return {
    plugins: [
      vue(),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      },
    },
    server: {
      open: true,
      proxy: {
        '/api': {
          target: env.VITE_APP_PORT, // 读取环境变量
          changeOrigin: true,
          pathRewrie: {
            '^/api': ''
          }
        }
      }
    },
  }
})

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

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

相关文章

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…

Map相关知识

数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…