位置: 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)

  • 华硕电脑怎么进入安全模式(华硕电脑怎么进入修复模式)

    华硕电脑怎么进入安全模式(华硕电脑怎么进入修复模式)

  • 华为mate30pro手机的重量是多少(华为mate30pro手机壳)

    华为mate30pro手机的重量是多少(华为mate30pro手机壳)

  • 被对方拒收的消息对方能看到吗(被对方拒收的消息怎么撤回)

    被对方拒收的消息对方能看到吗(被对方拒收的消息怎么撤回)

  • vivo手机玩一会就很烫(vivo手机玩一会儿就很烫是什么原因)

    vivo手机玩一会就很烫(vivo手机玩一会儿就很烫是什么原因)

  • 系统禁止安装怎么解决(系统禁止安装怎么取消vivoiqoo)

    系统禁止安装怎么解决(系统禁止安装怎么取消vivoiqoo)

  • 7p8p手机壳通用吗(7p的手机壳)

    7p8p手机壳通用吗(7p的手机壳)

  • 手机充电头松了怎么办(手机充电头松了更换尾插要多少钱)

    手机充电头松了怎么办(手机充电头松了更换尾插要多少钱)

  • 软件一般分为哪两大类(软件一般分为哪几大类)

    软件一般分为哪两大类(软件一般分为哪几大类)

  • 如何设置淘宝背景颜色(如何设置淘宝背景图)

    如何设置淘宝背景颜色(如何设置淘宝背景图)

  • iphonex是oled屏吗(苹果x是oled屏幕还是lcd)

    iphonex是oled屏吗(苹果x是oled屏幕还是lcd)

  • 华为智慧屏55寸什么时候上市(华为智慧屏55寸挂架)

    华为智慧屏55寸什么时候上市(华为智慧屏55寸挂架)

  • 荣耀手环5能不能打电话(荣耀手环5能不能换表带)

    荣耀手环5能不能打电话(荣耀手环5能不能换表带)

  • 小爱同学怎么连接蓝牙放歌(小爱同学怎么连接空调)

    小爱同学怎么连接蓝牙放歌(小爱同学怎么连接空调)

  • 华为狼性文化的理解(华为狼性文化的内涵是什么)

    华为狼性文化的理解(华为狼性文化的内涵是什么)

  • 京东如何申请商品保价(京东如何申请商家介入)

    京东如何申请商品保价(京东如何申请商家介入)

  • 推行6s的作用是什么(推行6s的三个原则)

    推行6s的作用是什么(推行6s的三个原则)

  • qq特别关心铃声修改(QQ特别关心铃声怎么取消)

    qq特别关心铃声修改(QQ特别关心铃声怎么取消)

  • 大模型训练——PEFT与LORA介绍(大模型训练成本)

    大模型训练——PEFT与LORA介绍(大模型训练成本)

  • 大溪地海岸附近的乌翅真鲨,法属波利尼西亚 (© Paul Mckenzie/Minden Pictures)(大溪地海岛在什么地方)

    大溪地海岸附近的乌翅真鲨,法属波利尼西亚 (© Paul Mckenzie/Minden Pictures)(大溪地海岛在什么地方)

  • Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D’ 问题解决方法(failed to execute goal org.apache)

    Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D’ 问题解决方法(failed to execute goal org.apache)

  • three.js中坐标系转换以及camera的position、lookAt与up属性理解(three.js如何给模型锚点)

    three.js中坐标系转换以及camera的position、lookAt与up属性理解(three.js如何给模型锚点)

  • diffstat命令  显示统计数字(didstata命令)

    diffstat命令 显示统计数字(didstata命令)

  • 帝国cms如何设置用户组权限(帝国cms移动端设置教程)

    帝国cms如何设置用户组权限(帝国cms移动端设置教程)

  • 房地产企业增值税收入确认时间
  • 报销流程如何操作视频
  • 企业租赁个人房屋怎么交税
  • 出口退税的报关单当月可以申请退税吗?
  • 金税三期国地税合并
  • 闲置土地归谁管理
  • 农产品代销合同协议书范本
  • 注销时其他应付款余额怎么账务处理
  • 文化事业建设费怎么计算
  • 工会经费按什么计算的
  • 公司交的拍卖费计入哪个会计科目?
  • 计提坏账的递延税收
  • 企业并购金额如何确定
  • 补缴以前年度个税会计处理
  • 2018水利基金税率是多少?怎么算
  • 未分配利润转增股本 个人所得税
  • 旅游企业小规模纳税人差额征收
  • 企业所得税预缴可以不交吗
  • 企业汽油费会计分录
  • 集体福利的增值税怎么算
  • 不同的折旧方法对经济评价有什么影响
  • 餐饮研发费用确认条件
  • 出口信用证议付支出是什么
  • 营改增后兼营非应税劳务的税务处理怎么做?
  • 广告公司返点是什么意思
  • 加速折旧以后年度如何填报调减额
  • qqpcrtp.exe是什么进程 如何删除qqpcrtp进程
  • 公允价值变动损益怎么算出来的
  • 收到租金税费怎么计算
  • 网页提示摄像头未授权
  • php中字符串函数
  • 税控机抵减增值税税额
  • 以固定资产换入无形资产
  • 无票收入什么时候确认收入
  • 超市进货产品
  • 生产企业免抵退税实例
  • 递延所得税资产和递延所得税负债
  • PostMan接口测试(很全面的接口测试教程)
  • 2021年前端还火吗
  • 简要说说vue是什么?有什么主要的特性?
  • 增值税专用发票和普通发票的区别
  • 开具劳务费发票的资料
  • 个税手续费返还要交企业所得税吗
  • 食品财务走账
  • 会员卡怎样批量生成
  • 购汽车能抵扣进项吗
  • 出租车票可以查到行程吗
  • 企业出售自用房产增值税
  • mysql的左右连接
  • 专门借款本金汇兑差额
  • 工会经费计提比例是应发工资还是实发工资
  • 补交进项转出的税分录
  • 保险收入如何做账
  • 长期待摊的分录
  • 长期股权投资如何入账
  • 新买固定资产怎么记账
  • 弥补亏损的会计处理
  • 如何定义是应付还是应付
  • 各单位都需设置的是
  • sql没有数据库
  • sql 查询效率
  • windows刷新快捷键是什么
  • ubuntu怎么刷新桌面
  • Win7系统启动盘
  • win10登录微软账户后进不去桌面
  • window10分屏显示
  • linux ssh gui
  • linux安装bz2
  • 安卓游戏模拟游戏制作
  • javascript提交数据
  • Node.js中的全局对象有
  • 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
  • vue中的echarts
  • 神奇宝贝
  • nodejs body-parser 解析post数据实例
  • jquery 图片裁剪
  • android底部弹出页面
  • 开票软件提示连接服务器失败怎么办
  • 朝阳地税局官网
  • 地税注销需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设