Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 不同生产版本的配置文件_Reactjs_Environment Variables_Runtime_Config_Dev To Production - Fatal编程技术网

Reactjs 不同生产版本的配置文件

Reactjs 不同生产版本的配置文件,reactjs,environment-variables,runtime,config,dev-to-production,Reactjs,Environment Variables,Runtime,Config,Dev To Production,我有一个React应用程序,将作为几个单独的应用程序进行部署,这些应用程序的差异非常小。在某些地方,某些文本可能不同,API URL可能不同,语言等 我该如何着手解决这个问题?我基本上希望能够构建一次,并且应用程序可以从位于构建文件夹中的配置文件更改其功能。。。可能吗?或者有没有其他我没有想到的方法来解决这个问题?您可以使用config.json文件并将所有更改存储在那里,您可能会遇到以下情况: 环境 config.json APP_1: { name: 'app one', lang: '/p

我有一个React应用程序,将作为几个单独的应用程序进行部署,这些应用程序的差异非常小。在某些地方,某些文本可能不同,API URL可能不同,语言等


我该如何着手解决这个问题?我基本上希望能够构建一次,并且应用程序可以从位于构建文件夹中的配置文件更改其功能。。。可能吗?或者有没有其他我没有想到的方法来解决这个问题?

您可以使用config.json文件并将所有更改存储在那里,您可能会遇到以下情况:

环境

config.json

APP_1: { name: 'app one', lang: '/path/to/lang', api_basepath: 'path/to/api' }
然后在你的代码中使用它,比如

import conf from './conf.json';

const useConfigData = key => conf[process.env.REACT_APP_ID][key]

const api = useConfigData('api_basepath');
const myFetch = () => {
  fetch(`${api}/some_endpoint`).then()
}

谢谢,这仍然需要我用不同的应用程序ID为每个应用程序构建4次,对吗?由于它无法在运行时读取env变量?是的,正确,那么可能不应该让应用程序ID来自env文件,而应该让它来自位于公用文件夹上的配置文件,这样你就可以在构建中更改相应的文件,并期望你的应用程序读取该文件谢谢!我就是这么做的:)我在index.html中添加了一个配置文件。谢谢你的帮助,非常感谢!
import conf from './conf.json';

const useConfigData = key => conf[process.env.REACT_APP_ID][key]

const api = useConfigData('api_basepath');
const myFetch = () => {
  fetch(`${api}/some_endpoint`).then()
}