如果您出于任何原因尝试在没有服务器的情况下部署客户端,请确保删除:
"proxy": "http://localhost:5000"
来自客户端的 package.json..
2019 年 7 月编辑:
Create React App 2.0 改变了我们定义代理的方式。
要确定您使用的是哪个版本,请检查您的客户端 package.json:“react-scripts”大于“2.x.x”
现在在 client/ 目录中安装这个包:
npm install http-proxy-middleware --save
在 client/src/ 目录中创建 setupProxy.js 文件。无需在任何地方导入此文件,CRA 会查找此名称的文件并加载它。
添加代理有多种方式:
选项 1:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
createProxyMiddleware(["/api", , "/otherApi"], { target: "http://localhost:5000" })
);
};
选项 2
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(createProxyMiddleware('/api/**', { target: 'http://localhost:5000' }));
app.use(createProxyMiddleware('/otherApi/**', { target: 'http://localhost:5000' }));
};
回答 cmets
此代理仅用于开发环境。在生产/Heroku 中,一切都在同一台服务器下运行,因此不需要 Proxy。
create-react-app 服务器只是在 Dev 环境中运行,所以当应用程序在 PROD 模式下运行时,它只是用于生成将由 Node/ 服务的生产 JS 包快递服务器。
查看this other answer,了解如何使其在生产中运行的问题。