位置: IT常识 - 正文

vite环境变量配置(vericut9.0环境变量)

编辑:rootadmin
vite环境变量配置

推荐整理分享vite环境变量配置(vericut9.0环境变量),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:环境变量配置教程,vericut8.0环境变量没有定义,vericut9.0.1环境变量,vericut9.0.1环境变量,vite环境变量配置,vericut9.0.1环境变量,vericut环境变量,vericut环境变量lshost,内容如对您有帮助,希望把文章链接给更多的朋友!

环境变量就是会根据当前的代码环境变化的变量叫做环境变量。 我们在项目中的代码环境大致分为下面几种: 1、开发环境 2、测试环境 3、预发布环境 4、灰度环境 5、生产环境

我们在项目中通常需要区分线上环境和开发环境的后端地址,例如:

开发环境:http://dev.api/生产环境:https://api/

我们每次在开发的时候都要区分confug.url的地址,如果测试的时候忘改地址了,地址是线上地址,那就会出大问题,测试数据直接影响到线上了。

我们在使用一些第三方sdk:百度地图sdk、小程序sdk等第三方sdk接口的时,需要带上身份信息APP_KEY,测试环境、生产环境、开发环境是不一样的key,例如这里的三种开发环境对应的不同sdk:

开发环境:110测试环境:111生产环境:112

假设现在是开发环境,APP_KEY为110,这里模拟一个axios请求:

// request.jsconst getUserInfo = () => { axios.post({ params : { APP_KEY : 110 // 开发环境的APP_KEY : 110 } })}

如果我们切换到生产环境,这里的APP_KEY需要换成112,如果切到测试环境,APP_KEY要换成111,这种手动更换是非常麻烦的。

所以我们这里需要区分一下生产环境和开发环境 新建两个文件: .env.development 开发和测试环境 .env.production 生产环境

// .env.development APP_KEY = 110 BASE_URL = http://test.api/// .env.productionAPP_KEY = 112BASE_URL = http://api/

我们在运行npm run dev的时候,希望上面的asiox的请求读的是.env.development 文件中的APP_KEY,运行npm run build的时候,希望asiox的请求读的是.env.production中的APP_KEY,并且对应的axios.basu_url自动更换到对应的地址。(这就是环境变量的意义)

在vite中环境变量的处理:dotenv第三方库(vite内置了dotenv库) dotenv第三方库会在启动npm run dev的时候读取.env文件,并解析这个文件中的环境变量,将其注入到process对象上。

vite环境变量配置(vericut9.0环境变量)

在node.js中,process对象(进程对象)代表node.js应用程序。 process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 process文档 (👈点击直达)

export default defineConfig(({command})=>{ console.log('process内容',process.env); // ......其他配置})

vite考虑到和其他配置的一些冲突问题,它不会直接注入到process对象下,而是调用vite的loadEnv来手动确认env文件。 loadEnv的三个参数: 1、mode:模式,根据你启动的的命令来的,比如npm run dev就是开发环境,build就是生产环境,如果你启动的命令为:npm run dev --mode development,那么mode会设置为development传递进来,启动命令为npm run dev的话系统会默认帮我们自动补全,这里也可以对mode进行更改,--mode xxxx(自定义名) 2、envDir:环境变量配置文件所在目录,这里可以使用process.cwd(),也可以这么写:envDir:"C:\Users\123\Desktop\vite-test"指向文件目录地址 3、prefixes:接受的环境变量前缀,不写默认为 env

export default defineConfig(({command,mode})=>{ const env = loadEnv(mode,process.cwd(),prefixes="") console.log(env); // 这里APP_KEY 110,并且BASE_URL也对应的是测试环境地址,挂载到env下面 // ......其他配置})

process.cwd():返回当前node进程的工作目录

当我们调用loadEnv的时候,它会做如下几件事情: 1、直接找到.env文件,并解析其中的环境变量,放到一个对象里

2、将传进来的mode这个变量的值进行拼接:.env.development,并根据提供的目录去取对应的配置文件进行解析,并放进一个对象里

3、我们可以理解为下面的操作: const baseEnvConfig = 读取.env的配置 const modeEnvConfig = 读取.env.mode(根据传入的mode决定,mode=development那么就是.env.development)文件 const lastEnvConfig = {...baseEnvConfig,...modeEnvConfig}

如果是客户端,vite会将对应的环境变量注入到import.meta.env里面去。 但是这里vite做了一个拦截,为了防止我们将隐私性的变量直接注入到import.meta.env,我们的环境变量就必须得是VITE_开头,否则vite不会将环境变量注入到import.meta.env

// .env.development文件:开发环境APP_KEY = 110 BASE_URL = http://dev.api/// request.jsconsole.log('import.meta.env的内容',import.meta.env)

未找到.env.development文件中的环境变量,因为开头不是VITE_,vite拦截了注入操作。

// .env.development文件:开发环境VITE_APP_KEY = 110 VITE_BASE_URL = http://dev.api/

当然,VITE_是一个默认前缀,我们也可以在vite.base.config.js文件中更改import.meta.env注入的默认前缀:

import { defineConfig } from "vite";export default defineConfig({ envPrefix:"ABC_" // 配置import.meta.env注入的前缀名称})

到这里环境变量配置就已经完成了,如果我们想要添加新的环境,例如:测试环境,那么只需要新建一个.env.test文件

// .env.test文件:测试环境ABC_APP_KEY = 111ABC_BASE_URL = http://test.api/

在package.json中添加测试环境的启动方式"test" : "vite --mode test"

{ "scripts": { "dev": "vite", "build" : "vite build", "test" : "vite --mode test" }, // ......其它配置}

启动npm run test,loadEnv会自动根据--mode test来寻找环境变量文件,.env后拼接test,也就是.env.test文件

// request.jsconsole.log('import.meta.env的内容',import.meta.env)// 利用配置的环境变量请求const getUserInfo = () => { axios.post({ params : { APP_KEY : import.meta.env.ENV_APP_KEY // 根据环境变量自动匹配APP_KEY } })}
本文链接地址:https://www.jiuchutong.com/zhishi/292417.html 转载请保留说明!

上一篇:阿布鲁佐的Rocca Calascio,意大利 (© Francesco Russo/eStock Photo)(阿布鲁佐的特点)

下一篇:vue使用jsMind(思维导图)(vue 使用js)

  • oppo全局搜索怎么关闭(oppo全局搜索怎么屏蔽应用)

    oppo全局搜索怎么关闭(oppo全局搜索怎么屏蔽应用)

  • 联想电脑如何恢复出厂设置(联想电脑如何恢复出厂)

    联想电脑如何恢复出厂设置(联想电脑如何恢复出厂)

  • 苹果xs max自拍怎么是反的(苹果xs max自拍怎么是反的怎么调整)

    苹果xs max自拍怎么是反的(苹果xs max自拍怎么是反的怎么调整)

  • 全家福字怎么扫(全家福字怎么扫描)

    全家福字怎么扫(全家福字怎么扫描)

  • 荣耀30防水吗(荣耀80防水吗)

    荣耀30防水吗(荣耀80防水吗)

  • apple pencil支持哪些ipad(apple pencil可以适配哪些ipad)

    apple pencil支持哪些ipad(apple pencil可以适配哪些ipad)

  • facetime对方挂掉显示什么(facetime通话直接挂断)

    facetime对方挂掉显示什么(facetime通话直接挂断)

  • 宽带可以接两个电视吗(宽带可以接两个WiFi吗)

    宽带可以接两个电视吗(宽带可以接两个WiFi吗)

  • 京东全面保障需要买吗(京东的全面保障包含碎屏么)

    京东全面保障需要买吗(京东的全面保障包含碎屏么)

  • 7p是什么处理器(mate40pro处理器)

    7p是什么处理器(mate40pro处理器)

  • 打字怎么变颜色(电脑微信打字怎么变颜色)

    打字怎么变颜色(电脑微信打字怎么变颜色)

  • 手机语音报时怎么设置(智能手机语音报时)

    手机语音报时怎么设置(智能手机语音报时)

  • 华为播放视频自动横屏(华为播放视频自动黑屏)

    华为播放视频自动横屏(华为播放视频自动黑屏)

  • 苹果11和苹果11pro的区别在哪里(苹果11和苹果11pro区别)

    苹果11和苹果11pro的区别在哪里(苹果11和苹果11pro区别)

  • 11pro怎么设置电量百分比(苹果11pro电量显示怎么设置)

    11pro怎么设置电量百分比(苹果11pro电量显示怎么设置)

  • 怎么打开ai格式的文件(如何打开ai格式文件怎么打开)

    怎么打开ai格式的文件(如何打开ai格式文件怎么打开)

  • 如何使用拼多多购物(如何使用拼多多账户余额)

    如何使用拼多多购物(如何使用拼多多账户余额)

  • 华为荣耀7x怎么装双卡(华为荣耀7x怎么调屏幕亮度时间)

    华为荣耀7x怎么装双卡(华为荣耀7x怎么调屏幕亮度时间)

  • 宁波5g什么时候覆盖(5g宁波什么时候出来)

    宁波5g什么时候覆盖(5g宁波什么时候出来)

  • automation服务器不能创建对(automation server cant)

    automation服务器不能创建对(automation server cant)

  • word的模板在哪儿(word模板在哪个选项卡)

    word的模板在哪儿(word模板在哪个选项卡)

  • iphone怎么设置ssl连接(Iphone怎么设置铃声)

    iphone怎么设置ssl连接(Iphone怎么设置铃声)

  • a9x和a9有什么区别(a9x与a9)

    a9x和a9有什么区别(a9x与a9)

  • 安卓arm怎么看(手机arm怎么看)

    安卓arm怎么看(手机arm怎么看)

  • 转移win10激活状态到新设备(激活windows转到设置以激活windows怎么消除)

    转移win10激活状态到新设备(激活windows转到设置以激活windows怎么消除)

  • hpztsb11.exe是什么进程 作用是什么 hpztsb11进程查询(hp是什么代码)

    hpztsb11.exe是什么进程 作用是什么 hpztsb11进程查询(hp是什么代码)

  • css元素定位:通过元素的标签或者元素的id、class属性定位(css定位属性的运用)

    css元素定位:通过元素的标签或者元素的id、class属性定位(css定位属性的运用)

  • java使用同步的注意点(java中同步有两种方法)

    java使用同步的注意点(java中同步有两种方法)

  • 营改增后土地增值税应税收入的确认
  • 受让应收账款的账务处理
  • 企业筹建期间契税账务处理
  • 专票如何开具
  • 弥补以前年度亏损后怎么交所得税
  • 当月开票没有收到钱
  • 企业经营活动所需的资金的来源渠道有
  • 土地增值税可扣除的税金有哪些
  • 契税印花税计税方法
  • 外购货物用于捐赠的会计分录
  • 绿化支出如何做会计处理?
  • 金融债券利息收入免企业所得税吗
  • 共用水电费税前扣除比例
  • 个体户发放现金工资税务局认可吗
  • 劳务费发票可以含材料费吗
  • 个人出租房屋税率表2023年
  • 处置固定资产按残值还是净值
  • 薪酬费用属于什么科目
  • 无票申报后开发票怎么申报
  • 可以全额抵扣的发票
  • mac显示器颜色不正常
  • 银行汇票计入什么费用
  • 销售部门的固定资产折旧计入什么科目
  • 快捷方式都变成pdf
  • 劳务报酬必须要和工资申报吗
  • php用户登录用的什么技术
  • 公司买了一辆二手汽车,怎么入账
  • 鸿蒙系统怎么设置桌面小组件
  • 贷款损失会计处理
  • 如何处理收到的短信
  • g++.exe error
  • 来料加工交关税吗
  • 计算机视觉会议2023年11月
  • opencv如何使用
  • php中session什么意思
  • 海岸边上
  • vue keep-alive实现原理
  • python填写表格
  • phpcms建站教程
  • 入库税款异常怎么处理
  • 未确认融资费用账务处理
  • 房产税收特点有哪些
  • 自产自销农产品增值税免税政策
  • 个人帮公司代持股份
  • 管理费用二级科目明细可以自己设置吗
  • 应收补贴款是什么
  • sqlserver2008安装闪退
  • 库存商品是表达什么意思
  • 第二季度所得税表中研发费用
  • 固定资产溢余
  • 年金终值计算公式是
  • 购买材料时如果没有取得购买材料的发票
  • 到期不续约补偿金怎么算
  • 当月发票已认证还能作废吗
  • 理财产品产生的收益会成为本金吗为什么
  • 每月可以先报税再缴费吗
  • 开发票的其他要求是?
  • 企业的未分配利润属于什么科目
  • 施工赔偿款怎么记账
  • 财务报表分析的目的
  • 物流行业货币资金占比
  • Navicat for MySQL(mysql图形化管理工具)是什么?
  • ubuntu14.04挂载硬盘
  • 2016年最火的歌曲排行前100首
  • win7桌面图标变成了lnk
  • Linux Kernel 4.5在3月15日发布最终版
  • windows电脑图片传到iphone
  • PACKAGER.EXE - PACKAGER是什么进程 有什么用
  • win8系统升级win8.1
  • Node.js中的事件循环是什么样的
  • sudo提权漏洞
  • 控制游戏类型
  • python怎么画子图
  • 小规模纳税人能开9个点的发票吗
  • 个人意外所得税税率
  • 5种方式教你如何查询
  • 单位首次交社保医疗要多久才能享受
  • 人文考试多少分合格
  • 房子有注册公司可以卖吗
  • 药品定价的三种形式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设