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

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

相关推荐
anOnion4 分钟前
构建无障碍组件之Window Splitter Pattern
前端·html·交互设计
NotFound48614 分钟前
实战分享Python爬虫,如何实现高效解析 Web of Science 文献数据并导出 CSV
前端·爬虫·python
徐小夕37 分钟前
PDF无限制预览!Jit-Viewer V1.5.0开源文档预览神器正式发布
前端·vue.js·github
WangJunXiang61 小时前
Haproxy搭建Web群集
前端
吴声子夜歌1 小时前
Vue.js——自定义指令
前端·vue.js·flutter
小芝麻咿呀1 小时前
vue--面试题第一部分
前端·javascript·vue.js
这儿有一堆花2 小时前
深入解析 Video.js:现代 Web 视频播放的工程实践
前端·javascript·音视频
烤麻辣烫2 小时前
JS基础
开发语言·前端·javascript·学习
IT_陈寒3 小时前
Vue的响应式把我坑惨了,原来问题出在这
前端·人工智能·后端