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

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

相关推荐
weixin_4277716120 分钟前
css加载顺序导致本地和线上样式不一致
前端·css
漂流瓶jz7 小时前
Webpack如何实现万物皆可import?loader的使用/配置/手写实践
前端·javascript·webpack
ZC跨境爬虫8 小时前
跟着 MDN 学CSS day_41:显式轨道、隐式网格与区域命名放置
前端·javascript·css·ui·交互
weelinking8 小时前
【产品】12_接入数据库——让数据永久保存
jvm·数据库·python·react.js·数据挖掘·前端框架·产品经理
修己xj9 小时前
告别手动存图!这款叫 Fatkun 的浏览器插件,简直是素材收集神器
前端
袋鼠云数栈9 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
AskHarries9 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment10 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx2310 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
kyriewen11 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试