首页 > 解决方案 > 为基于 create-react-app 的项目运行 npm build 后在运行时读取环境变量

问题描述

我是 React 新手,我将部署一个 React 项目。React 项目由 create-react-app 创建,然后生产代码由“npm build”构建,并由 Express 托管。

在项目中,有一些对 API 服务器的 fetch 调用,其 URL 是可配置的。在开发中,我可以通过在 .env 文件(例如 REACT_APP_API_URL= http://somewhere/)的环境变量中设置它并在代码中导入来做到这一点。

但是,似乎这些环境变量在运行“npm build”后变为静态,我无法再更改它,即使在我启动服务器时执行“REACT_APP_API_URL= http://otherserver/ node express_server.js”之类的操作。

我想问一下“npm build”之后是否有任何方法可以为代码获取一些配置,最好是从文件或.env中获取,从环境变量中获取对我来说也可以。

谢谢你。

标签: node.jsreactjsexpresscreate-react-app

解决方案


环境变量在构建步骤中嵌入到文件中,因此您需要在调用react-scripts build.

例子

"scripts": {
  "start": "cross-env REACT_APP_API_URL=http://somewhere/ react-scripts start",
  "build": "cross-env REACT_APP_API_URL=http://otherserver/ react-scripts build",
}

推荐阅读