Vite 读取环境变量
在 vite.config.ts 中读取 .env 定义的变量
方案一: loadEnv 函数 (vite 包提供的方法)
const env = loadEnv(mode, process.cwd());
默认只会读取到以 VITE_ 开头的变量, 如果需要读取到指定前缀的变量, 第三个参数传 'prefix', prefix 的默认值是 VITE_
function loadEnv(mode, envDir, (prefixes = "VITE_")){
// ...
};
在客户端代码中访问环境变量需要使用 import.meta.env.VITE_XXXX
需要在 tsconfig.json 中引用 Vite 的类型
{
"compilerOptions": {
"types": ["vite/client"]
}
}
import.meta.env 内置变量
import.meta.env.MODEimport.meta.env.BASE_URLimport.meta.env.PRODimport.meta.env.DEVimport.meta.env.SSRimport.meta.env自定义变量需要以VITE_开头
方案二: dotenv
import dotenv from 'dotenv'
// 手动加载 .env 文件
dotenv.config()
console.log(process.env.VITE_PORT)
import.meta.env 和 process.env 的区别
import.meta.env
vite提供的- 在客服端使用(浏览器)
- 数据源是 .env 文件(Vite 处理之后的 .env 文件)
- 变量名需要以
VITE_开头 - 构建时静态替换
process.env
nodejs全局对象- 在服务端使用(需要nodejs环境)
- 数据源是操作系统环境变量,(需要
dotenv.config()才能取到.env文件的变量) - 变量名无要求
- 运行时读取