You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用能否读取系统环境变量而非.env文件?

在React应用中读取系统环境变量的实现方案

首先明确核心前提:React是运行在浏览器端的前端框架,无法直接访问系统环境变量,必须通过构建工具在项目启动/构建阶段,将系统环境变量注入到应用代码中,才能在前端代码里使用。以下是不同构建工具下的具体实现方式:

1. Create React App (CRA) 项目

CRA默认支持注入系统环境变量,但要求变量名必须以REACT_APP_为前缀。

开发环境启动

直接在启动命令前追加系统变量:

# Linux/Mac
REACT_APP_API_URL=$API_URL npm start

# Windows PowerShell
$env:REACT_APP_API_URL = $env:API_URL; npm start

# Windows CMD
set REACT_APP_API_URL=%API_URL% && npm start

之后在代码中直接通过process.env.REACT_APP_API_URL访问变量。

生产构建

同样在构建命令前传递系统变量:

# Linux/Mac
REACT_APP_API_URL=$API_URL npm run build

# Windows PowerShell
$env:REACT_APP_API_URL = $env:API_URL; npm run build

简化命令(可选)

可以在package.json的scripts中预先配置,避免每次手动输入:

// Linux/Mac 配置
"scripts": {
  "start": "REACT_APP_API_URL=$API_URL react-scripts start",
  "build": "REACT_APP_API_URL=$API_URL react-scripts build"
}

// Windows CMD 配置
"scripts": {
  "start": "set REACT_APP_API_URL=%API_URL% && react-scripts start",
  "build": "set REACT_APP_API_URL=%API_URL% && react-scripts build"
}

2. Vite 项目

Vite对环境变量的前缀要求是VITE_,构建时会自动识别并注入符合规则的系统变量。

启动/构建时传递变量

# Linux/Mac
VITE_API_URL=$API_URL npm run dev
VITE_API_URL=$API_URL npm run build

# Windows PowerShell
$env:VITE_API_URL = $env:API_URL; npm run dev

代码中访问

直接通过import.meta.env.VITE_API_URL读取变量。

简化命令(可选)

在package.json中配置脚本:

// Linux/Mac
"scripts": {
  "dev": "VITE_API_URL=$API_URL vite",
  "build": "VITE_API_URL=$API_URL vite build"
}

3. 自定义Webpack配置的项目

如果是自行配置Webpack的React项目,需要使用DefinePlugin手动注入系统变量:

在webpack.config.js中添加配置:

const webpack = require('webpack');

module.exports = {
  // 其他Webpack配置
  plugins: [
    new webpack.DefinePlugin({
      // 将系统环境变量API_URL注入到前端代码的process.env中
      'process.env.REACT_APP_API_URL': JSON.stringify(process.env.API_URL)
    })
  ]
};

之后启动或构建时传递系统变量:

API_URL=$API_URL npm run build

前端代码中通过process.env.REACT_APP_API_URL访问。

关键注意事项

  • 所有注入的系统变量都会被打包进前端静态文件,生产环境构建时务必确保变量值正确。
  • 不同构建工具的变量前缀要求必须遵守,否则变量不会被注入到前端代码中。
  • 不要在前端代码中存储敏感信息(如密钥),即使通过系统变量注入,也会暴露在浏览器的开发者工具中。

内容的提问来源于stack exchange,提问作者user21036191

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:22:09