【vue3】-解决build打包之后,无法获取import.meta.env环境变量的问题

本文介绍了如何在Vue3项目中使用vite时,当import.meta.env无法获取自定义环境变量时,通过引入dotenv和loadEnv.js模块,实现通过process.env加载不同模式下的.env文件,以便在API中使用自定义变量。
摘要由CSDN通过智能技术生成

转载自这篇文章
关于vue3:vite-vue3-项目通过-importmetaenv-获取自定义的变量

最近应用 vite + vue3 开发新我的项目,遇到非 vite.config.js 文件,通过 import.meta.env 获取不到 .env.[mode] 文件自定义变量的问题,心愿此文章能够帮忙更多遇到此问题的小伙伴!

怎么解决此问题?
不卖关子了,间接上解决方案,既然间接通过 import.meta.env 拿不到,咱们能够尝试通过 process.env 的形式来获取。

具体做法如下:

1、装置 dotenv 帮忙咱们加载指定的环境变量;

npm i dotenv -D

2、新建一个 loadEnv.js 的文件;

import * as dotenv from 'dotenv'

// 通过 dotenv 配置须要加载指定 .env 文件,这样 process.env 打印到得就是对应得文件了
// 这里的 mode 是咱们启动时候的参数,npm run build:test 失去的 mode 就是 test
export function loadEnv(mode) {
  const ret = {}
  // 在应用之前咱们先指定加载哪个环境变量
  dotenv.config({
     path: `.env.${mode}`
  })

  Object.keys(process.env).forEach(envName => {
     const realName = process.env[envName].replace(/\\n/g, '\n')
     ret[envName] = realName
     // 向 process.env 上扩大咱们定义的 VITE 环境变量
     process.env[envName] = realName
  })
  return ret
}

3、在我的项目根目录下创立如下文件

.env.deveopmemt // 开发环境
.env.test // 测试环境
.env.staging // 预上线环境
.env.production // 生产环境

4、在package.json 中增加如下脚本

"scripts": {
  "dev": "vite",
  "build:test": "vite build --mode test",
  "build:release": "vite build --mode staging",
  "build": "vite build --mode production",
}

5、vite.config.js 中引入 loadEnv.js

import { defineConfig } from 'vite'

import { loadEnv as myLoadEnv } from './loadEnv.js'

export default defineConfig(({ command, mode }) => {
   myLoadEnv(mode)
   return {
       // 增加须要的内容,此处省略
   }
})

6、这时候如果咱们要在 api.js 中应用自定义的变量,能够这样应用

const baseURL = import.meta.env.VITE_BASE_URL
const service = axios.create({
  baseURL,
  timeout: 10 * 1000,
});
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值