React@18+Vite项目配置env文件

React+Vite配置接口URL的env文件要符合以下规则:

1. 文件位置

确保 .env 文件放在项目根目录:

复制代码
your-vite-project/
├── node_modules/
├── public/
├── src/
├── .env           # ✅ 正确位置
├── .env.development
├── .env.production
├── index.html
├── package.json
├── vite.config.js
└── README.md

2. 环境文件类型

Vite 支持多个环境文件:(文件名必须是这样的)

复制代码
.env                # 所有环境通用
.env.local          # 本地覆盖(不提交到git)
.env.development    # 开发环境 (如果文件名是 .env.develop 就不行)
.env.production     # 生产环境
.env.test          # 测试环境

3. Vite 环境变量命名规则

Vite 使用 VITE_ 作为自定义环境变量的前缀:

复制代码
# .env 文件
VITE_API_URL=http://localhost:3000/api
VITE_API_TIMEOUT=5000

4. 正确的访问方式

Vite 通过 import.meta.env 访问环境变量:

复制代码
// 在组件中
console.log(import.meta.env.VITE_API_URL); // http://localhost:3000/api
console.log(import.meta.env.VITE_API_TIMEOUT); // 5000

// 使用变量
const apiUrl = import.meta.env.VITE_API_URL;
fetch(`${apiUrl}/users`)

5. 在 Vite 配置中使用

复制代码
// vite.config.js
import { defineConfig, loadEnv } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig(({ command, mode }) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd(), '')
  
  console.log('当前模式:', mode)
  console.log('API URL:', env.VITE_API_URL)
  
  return {
    plugins: [react()],
    server: {
      port: env.VITE_PORT || 3000,
      proxy: {
        '/api': {
          target: env.VITE_API_URL,
          changeOrigin: true
        }
      }
    },
    define: {
      // 可以在这里定义全局常量
      __APP_VERSION__: JSON.stringify(env.npm_package_version)
    }
  }
})

6. 不同环境的配置文件

复制代码
# .env.development
VITE_API_URL=http://localhost:3000/api
VITE_ENABLE_DEBUG=true

# .env.production
VITE_API_URL=https://api.example.com
VITE_ENABLE_DEBUG=false

# .env.test
VITE_API_URL=http://test-api.example.com
VITE_ENABLE_DEBUG=true

注:修改了配置文件后要 重启项目

相关推荐
用户033307413956 小时前
TypeScript using 与 AsyncDisposableStack:在真实服务端代码中协调多资源清理
前端
daisychey6 小时前
用 Playwright 做多平台内容分发,我踩过的 8 个坑
前端
IT_陈寒7 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
大龄秃头程序员7 小时前
iOS冷启动监控Demo
前端
光影少年7 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
掘金酱8 小时前
[稀土掘金 × 火山引擎] AI用量周榜冲刺赛|获奖名单公示
前端·人工智能·后端
泡泡oO8 小时前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈
维克兜率天8 小时前
趋势过滤:避免被“假突破“反复打脸
前端
8年区块链老兵9 小时前
一篇文章教会你:用区块高度读懂比特币链上的每一笔交易
前端
xixichensh9 小时前
前端转做AI程序员第一步——开发一个AI流式对话Demo
前端