Javascript 代理不适用于生产中的create react应用程序

Javascript 代理不适用于生产中的create react应用程序,javascript,reactjs,proxy,Javascript,Reactjs,Proxy,我正在使用reactjs(createreactapp)创建一个仪表板应用程序,在我的应用程序中我调用多个主机(为此,我在package.json中配置了多个代理以避免CORS)。 ex-www.app.demo1.com、www.app.demo2.com、www.app.demo3.com 在应用程序中,我像- try{ const host1 = process.env.NODE_ENV === 'production'? 'www.app.demo1.com/demo1/a

我正在使用reactjs(createreactapp)创建一个仪表板应用程序,在我的应用程序中我调用多个主机(为此,我在package.json中配置了多个代理以避免CORS)。 ex-www.app.demo1.com、www.app.demo2.com、www.app.demo3.com

在应用程序中,我像-

try{
   const host1 = process.env.NODE_ENV === 'production'? 
   'www.app.demo1.com/demo1/api': '/demo1/api/';
   const host2 = process.env.NODE_ENV === 'production'? 
   'www.app.demo2.com/demo2/api': '/demo2/api/';
   const host3 = process.env.NODE_ENV === 'production'? 
  'www.app.demo3.com/demo3/api': '/demo3/api/';
   const resp1 = axios.get(host1)
   const resp2 = axios.get(host2)
   const resp3 = axios.get(host3)
}catch(){}
在开发中:当向/demo1/api/发出请求时,它正在被代理 www.app.demo1.com/demo1/api,我正在得到回复。但是

在生产中:我已经在github页面上部署了应用程序,尽管我得到了以下错误,


有人能帮忙吗?

代理仅用于开发目的,由
网页开发服务器处理。在生产中,您需要调用实际主机


这是因为通常在开发时,react由一个独立的服务器提供服务(因此,
webpack dev server
)。在生产环境中,通常有一个后端(node?ruby?php?)为页面提供服务,每次调用都将指向具有相同主机名的某个端点

例如:

在开发环境中,节点服务器运行在端口3001上,react代码运行在端口3000上。当react获取
/api/user
时,您实际上想要
http://localhost:3001/api/user
,它指向您的节点服务器


在您的生产环境中,您有一个服务器(可能是nginx),它将所有
/api
调用转发到您的节点进程,并为您的react main
index.html
文件提供服务(例如,您可以使用
react router
)。在这种情况下,无论何时您请求
/api/user
,这都将由您的web服务器处理并正确路由。

您需要添加更多详细信息,您在生产中会遇到什么样的错误?
webpack dev server
代理在生产中不起作用。检查下面的完整答案。如果所有API都托管在不同的域中,而react应用程序驻留在不同的域中,我们如何配置nginx来处理此问题@sergio mouraOur客户端希望节点处理api请求,并将其重定向到驻留在另一个域上的适当api端点。如何部署它?
try{
   const host1 = process.env.NODE_ENV === 'production'? 
   'www.app.demo1.com/demo1/api': '/demo1/api/';
   const host2 = process.env.NODE_ENV === 'production'? 
   'www.app.demo2.com/demo2/api': '/demo2/api/';
   const host3 = process.env.NODE_ENV === 'production'? 
  'www.app.demo3.com/demo3/api': '/demo3/api/';
   const resp1 = axios.get(host1)
   const resp2 = axios.get(host2)
   const resp3 = axios.get(host3)
}catch(){}