我在create react应用程序中使用了以下环境变量:

console.log(process.env.REACT_APP_API_URL) // http://localhost:5555

当我通过读取.env文件运行npm start时,它会起作用:

REACT_APP_API_URL=http://localhost:5555

在执行npm run build时,如何设置不同的值,如http://localhost:1234

这是我的package.json文件:

{
  "name": "webapp",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "react-scripts": "0.9.0"
  },
  "dependencies": {
    "react": "^15.4.2",
    "react-dom": "^15.4.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

推荐答案

你可以这样使用process.env.NODE_ENV:

const apiUrl = process.env.NODE_ENV === 'production' ? process.env.REACT_APP_PROD_API_URL : process.env.REACT_APP_DEV_API_URL;

你需要设置REACT_APP_PROD_API_URLREACT_APP_DEV_API_URL.

或者,如果生产URL总是相同的,您可以简化它:

const apiUrl = process.env.NODE_ENV === 'production' ? 'https://example.com' : process.env.REACT_APP_DEV_API_URL;

Create React应用程序在构建时为您将NODE_ENV设置为"生产",因此您无需担心何时将其设置为生产.

Note:必须重新启动服务器(例如再次运行npm start)才能检测环境变量的变化.

Reactjs相关问答推荐

URL参数和React路由中的点

是否可能有不同的加载器用于路径有查询参数和没有查询参数,或者在React Router 6中添加它们时有条件地跳过一个加载器?

Reaction路由的问题-在Effect使用API调用响应设置状态之前呈现页面

如何通过浏览器路由在单独的.jsx文件中使用MUI抽屉?

Reaction Ploly:如何在多个子情节中共享zoom 状态

在React Create App TS项目中安装material UI

当我try 部署我的Reaction应用程序时,为什么在此PrevState语句中收到语法错误?

在Map()完成React.js中的多个垃圾API请求后执行函数

透明MOV文件未出现在我的React网页中

useRef()的钩子调用无效

UseEffect 似乎不适用于页面的首次渲染

为什么在 React 的 useEffect 中使用 onAuthStateChanged ?

解决在React测试库中的act()警告

无法读取未定义的属性(阅读 'editQuoteModalShown')reactredux

onChange in useEffect 的最佳实践

我正在try 使用 cypress 测试我的下拉列表,它 Select 值但不提交它们(手动工作)

用 jest 测试包裹在 redux 和 router 中的组件

如何使用 babel 将 SVG 转换为 React 组件?

如何在 react-router-dom v6 中实现监听功能?

如何跟踪 dexie UseLiveQuery 是否完成