在 Vite 中,环境变量的处理方式与传统的 Node.js 环境有所不同
在 Vite 中,环境变量的处理方式与传统的 Node.js 环境有所不同,这可能是导致你遇到问题的原因。
当你使用 vite build --mode test
时,Vite 会:
- 加载
.env.test
文件中的环境变量 - 自动设置
import.meta.env.MODE
为 “test” - 但不会自动设置
process.env.NODE_ENV
在 Vite 中,process.env
并不是默认提供的,而且官方推荐使用 import.meta.env
来访问环境变量。
要解决你的问题,可以有两种方案:
- 使用 Vite 提供的模式变量:
export const adminApi = import.meta.env.MODE === 'test' ? '/test-admin' : '/admin';
- 在 .env.test 文件中显式定义 NODE_ENV:
# .env.test 文件
NODE_ENV=test
然后在代码中使用(需要通过 VITE_ 前缀暴露):
# .env.test 文件
VITE_NODE_ENV=test# 代码中
export const adminApi = import.meta.env.VITE_NODE_ENV === 'test' ? '/test-admin' : '/admin';
Vite 对环境变量有特殊处理,只有以 VITE_
为前缀的变量才会被暴露到客户端代码中,除非你通过 envPrefix
配置修改了这个前缀。
所以最推荐的方式是使用 Vite 内置的 import.meta.env.MODE
来判断当前模式,这样最符合 Vite 的设计理念。