【vite】vite环境变量.env文件的配置及使用,环境变量读取问题

前言

Vite中,我们可以使用环境变量来管理不同环境下的配置,本文主要介绍了vite环境变量.env文件的配置及使用,具有一定的参考价值,感兴趣的可以了解一下

1. 环境变量使用场景

  • 区分不同的环境。在Vite中,我们可以使用环境变量来管理不同环境下的配置。Vite支持使用.env文件来配置环境变量,不同的环境可以使用不同的.env文件来管理配置。
  • 当做全局变量使用。用来判断是开发或者测试环境,展示不用的页面、按钮等等。

2. 创建.env文件

首先,我们需要在项目的根目录下创建.env文件。.env文件中可以定义各种环境变量,例如API的地址、端口号等等。以下是一个简单的.env文件示例:

VITE_APP_DEV = 'dev-api'
VITE_APP_URL = 'http://192.168.0.0.1/api' 

注意:在vite中环境变量必须以VITE开头

在这里插入图片描述

3. 在应用程序中使用环境变量

要在Vite的应用程序中使用环境变量,我们可以使用import.meta.env对象来访问它们。例如,在组件中可以使用以下方式访问VITE_APP_TITLE环境变量:

// 在组件中可以通过这种方式来访问
<script setup lang="ts">
console.log(import.meta.env);
</script>

3.1. 输出结果(开发环境):

在这里插入图片描述

3.2. 输出结果(生产环境):

  • 运行 npm run build 打包项目,生成 dist 文件
  • 运行 npm install http-server -g 安装http-server。(由于dist文件本地直接打开会跨域(file文件协议不允许跨域),因此需要启动一个后台服务)
  • 运行http-server -p <端口号> -o,启动后台服务
  • 打开页面后,此时查看浏览器控制台就可以看到如下的输出信息

此处启动后台服务方式很多。可以使用http-server,也可以使用nginx等其他方式

在这里插入图片描述

在这个示例中,我们使用import.meta.env来访问环境变量,并将其输出到控制台中。

4. 在 vite 中使用环境变量

另外,我们还可以在Vite的配置文件中使用环境变量。例如,可以在vite.config.js文件中使用以下方式访问环境变量:

vite.config.js文件测试 vite 获取到的环境:

运行 npm run dev 可以看到打印出的是 development

在这里插入图片描述

运行 npm run build 可以看到打印出的是 production

在这里插入图片描述

vite 中不支持 import.mete.env,环境变量通常从 process 获得。使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件

在这里插入图片描述
更多请查看:Vite 官方中文文档

下班~

<think>好的,用户问的是如何在vite.config.ts中获取.env.development中的变量。首先,我需要回忆一下Vite环境变量处理机制。Vite默认情况下会加载以VITE_开头的环境变量,这些变量会被注入到import.meta.env中。不过这里的问题是在vite.config.ts里访问这些变量,而配置文件是在构建时运行的,这时候环境变量可能还没有被加载。 接下来,我需要确定正确的做法。根据Vite的文档,在配置文件中,可以通过process.env来访问环境变量,但要注意的是,只有在配置文件中显式加载的变量才会被获取。或者,可能需要使用Vite提供的loadEnv函数来手动加载环境变量。这是因为Vite不会自动将.env文件中的变量注入到process.env中,除非使用loadEnv。 所以正确的步骤应该是:在vite.config.ts中使用loadEnv函数,指定mode和envDir,然后读取对应的变量。比如,传入mode为'development',envDir为项目根目录,这样就能加载.env.development中的变量了。需要注意的是,只有以VITE_开头的变量才会被加载,但可以通过第三个参数来改变前缀,比如设置为''来加载所有变量,不过这可能会有安全风险。 然后,用户给出的示例代码是否正确呢?他们使用了loadEnv函数,传入了process.argv中的mode或者默认的'development',然后envDir是当前目录。然后通过process.env获取变量。不过这里可能有个问题,loadEnv返回的是一个对象,所以应该用loadedEnv.VARIABLE_NAME来获取,而不是process.env。或者,可能loadEnv会将变量添加到process.env中?这点需要确认。根据Vite的文档,loadEnv函数会返回一个包含解析后的环境变量的对象,但不会直接修改process.env,除非显式地赋值。所以正确的做法应该是将loadEnv的结果合并到process.env中,或者直接使用返回的对象。 比如,代码示例中可能应该修改为: const env = loadEnv(mode, process.cwd(), ''); console.log(env.VITE_MY_VAR); 或者,如果用户的环境变量没有VITE_前缀,那么第三个参数设为空字符串,就可以读取所有变量。但需要注意安全提示,因为这样可能会暴露敏感信息。 总结回答的步骤:使用loadEnv函数,传入正确的mode和envDir,然后从返回的对象中获取变量。同时,需要确保.env文件中的变量名称正确,并且根据需要设置前缀。 可能用户的问题还有,为什么直接在process.env中访问不到.env.development中的变量?这是因为Vite不会自动将这些变量注入到Node.js的process.env中,必须通过loadEnv手动加载。这也是为什么需要显式调用这个函数的原因。 最后,给出相关的问题,应该围绕环境变量Vite中的使用,比如如何在前端访问、不同模式的加载顺序、安全注意事项等。</think><< 在Vite中获取`.env.development`环境变量需要通过`loadEnv`函数显式加载。以下是具体实现方式: ```typescript // vite.config.ts import { defineConfig, loadEnv } from 'vite' export default defineConfig(({ mode }) => { // 加载环境变量 const envDir = process.cwd() // 项目根目录 const loadedEnv = loadEnv( mode.includes('development') ? 'development' : mode, envDir, '' // 空字符串表示加载所有变量(注意安全风险) ) // 访问环境变量 console.log(loadedEnv.VITE_MY_VAR) return { // 配置... } }) ``` **解释说明**: 1. `loadEnv`函数需要三个参数: - 当前模式(development/production等) - 环境文件目录 - 环境变量前缀(默认`VITE_`,空字符串表示加载全部) 2. 使用`process.cwd()`获取项目根目录路径,确保正确找到`.env`文件 3. 空字符串作为第三个参数时,会加载所有环境变量(包括不带`VITE_`前缀的变量),但需要注意这可能导致敏感信息泄露 4. 开发模式下优先使用`development`作为模式参数,确保正确加载`.env.development`文件 **安全提示**:生产环境中建议始终使用`VITE_`前缀,避免敏感信息暴露到客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fruge365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值