当前位置: 首页 > 面试题库 >

反应配置文件以进行后期部署设置

方永贞
2023-03-14
问题内容

我已经建立了一个reactjs网站,并试图使其能够部署。

现在,所有配置都是通过导入到所有模块中的config.js完成的。

但是,当我构建应用程序时,它会被编译到部署js中,并且是不可配置的。

我想拥有一个单独的文件,系统管理员可以根据其环境配置各种设置,例如API端点(该应用程序可能与后端未在同一服务器上运行,并且将无法访问DNS )。

有办法做到这一点吗?我也不希望为此使用第三方库。


问题答案:

我设法破解了一个解决方案。

在公用文件夹“ config.js”中

var config = {
      x: 'y',
};

接下来将ReactDOM.render(App / index.js打包成这样的功能

window.RenderApp = (config) => {
   ReactDOM.render(<App _config={config}/>, document.getElementById('root'));
}

在index.html中添加这些行,window.RenderApp必须位于末尾,因为它依赖于被导入的bundle.js,该包是由react自动添加的,并且在生产中具有随机名称。

</html>
...
<head>
...
<script type="text/javascript" src="%PUBLIC_URL%/config.js"></script>
...
</head>
...
<body>
...
</body>
<script>
   window.RenderApp(config);
</script>
</html>

最后在您的App.js或您曾经使用的配置中使用配置变量

...
constructor(props) {
    super(props)
    console.log(this.props._config)
    this.state = {
       ....
       config: this.props._config,
   }
}
...

我发现您必须将config设置为状态变量,否则它将为对象随机抛出undefined,现在只需将config传递到层次结构中即可在您的代码中使用。



 类似资料:
  • 问题内容: 我一直在开发一些Node应用程序,并且一直在寻找一种存储与部署相关的设置的良好模式。在Django世界(我来自哪里)中,通常的做法是创建一个包含标准设置(时区等)的文件,然后包含一个用于部署特定设置的文件。与哪个数据库进行通信,什么Memcache套接字,管理员的电子邮件地址等等。 我一直在寻找Node的类似模式。只需一个配置文件就可以了,因此它不必与中的其他所有文件一起使用,但是我发

  • 我试图在我的项目pom中使用配置文件。xml文件,用于控制将我的war文件部署到特定服务器。例如,我有一个本地配置文件和一个开发服务器配置文件。下面是我如何设置个人资料的 我打电话来 当我尝试此操作时,我可以看到,它不是尝试连接到我的配置中提供的IP地址,而是尝试连接到。我在本地包含用户名和密码的文件。 如果我然后添加选项,以获得更多信息,我可以在插件的调试输出中看到(强调部分已添加) 似乎没有遵

  • 问题内容: 在进行Django 开发时,我倾向于使用SQLite,但是在实时服务器上,通常需要更强大的功能(例如MySQL / PostgreSQL)。同样,对Django设置也有其他更改:不同的日志记录位置/强度,媒体路径等。 你如何管理所有这些更改,以使部署变得简单,自动化? 问题答案: 如果你希望手动进行操作,则我先前的答案仍然适用: 我有多个设置文件。 -特定于主机的配置,例如数据库名称,

  • 我试图在Kubernetes集群上部署RabbitMQ,并使用initcontainer从ConfigMap复制一个文件。但是,POD处于运行状态后,文件不会复制。 最初,我尝试不使用init容器,但我得到了一个错误,如“触摸:不能触摸'/etc/Rabbitmq/rabbitmq.conf':只读文件系统” 文件“definitions.json”应复制到/etc/reabbitmq文件夹。我遵

  • 但却被忽略了。 是否可以使用maven激活配置文件?

  • 5-根据安装指南从github下载了nodejs应用程序,现在我得到了部署在本地服务器上的应用程序的文件夹结构 6-我需要在应用程序文件夹中包含以下内容才能成功地将应用程序部署到服务器 package.json文件中的a-npm依赖项b-bower.json文件(稍后我应该能够运行bower install在repo中安装bower依赖项)不成功,我没有对该目录的sudo权限 ==>app-roo