创建 React App http-proxy-middleware 不工作
Posted
技术标签:
【中文标题】创建 React App http-proxy-middleware 不工作【英文标题】:Create React App http-proxy-middleware not working 【发布时间】:2020-02-14 06:50:08 【问题描述】:所以我使用http-proxy-middleware
在我的create-react-app
应用程序上设置了我的代理。我确定我已按照信中的说明进行操作,但每次尝试点击相关链接时都会收到 404。
我正在使用create-react-app
v3.2。
这是我的setupProxy.js
文件:
const proxy = require("http-proxy-middleware");
module.exports = function(app)
app.use(proxy("/api", target: "http://localhost:3090" ));
;
这是发出http
请求的动作创建者
export const signIn = formProps => async dispatch =>
try
const response = await axios.post("/api/login", formProps);
//.....etc, etc
catch(e)
//.....etc,etc
这是我的快递服务器上的相关路线:
app.post("/login", requireSignIn, Authentication.login);
当开发服务器启动时,我收到以下消息:
[HPM] Proxy created: /api -> http://localhost:3090
所以setupProxy.js
显然已被 CRA 接收,但某处有问题。我尝试在代理设置中添加通配符(例如“/api/*”),但没有成功。我在客户端的控制台中登录了以下 404:
POST http://localhost:3000/api/login 404 (Not Found)
引用localhost:3000
,表明代理(应该重定向到localhost:3090
)没有被使用。
我不禁想到这里缺少一些非常简单的东西,但目前正在努力让它发挥作用。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
【参考方案1】:从v1.0.0
或http-proxy-middleware
开始,setupProxy.js
文件需要显式导入;所以而不是之前的默认导入
const proxy = require("http-proxy-middleware");
你需要使用:
const createProxyMiddleware = require('http-proxy-middleware');
module.exports = function(app)
app.use(createProxyMiddleware("/api", target: "http://localhost:3090" ));
;
【讨论】:
【参考方案2】:找到了这个问题的答案 - 正如预期的那样,这是一个简单的错误。
我的快递服务器上的路由如下:
app.post("/login", requireSignIn, Authentication.login);
而他们应该是:
app.post("api/login", requireSignIn, Authentication.login);
问题解决了!
【讨论】:
【参考方案3】:将 setupProxy.js 文件代码替换如下:
const createProxyMiddleware = require('http-proxy-middleware');
module.exports = function(app)
app.use(
'/api/login',
createProxyMiddleware(
target: 'http://localhost:3090',
changeOrigin: true,
)
);
;
【讨论】:
以上是关于创建 React App http-proxy-middleware 不工作的主要内容,如果未能解决你的问题,请参考以下文章
为啥 create-react-app 会同时创建 App.js 和 index.js?
create-react-app创建react项目,使用axios跨域
尝试运行命令时创建 React App 错误 npx create react app: spawn UNKNOWN
如何为使用“create-react-app”创建的 React 应用程序设置标头
如何删除 React App 符号和名称或“使用 create-react-app 创建的网站”?
React-native 构建失败:“无法创建任务 ':app:copyDownloadableDepsToLibs'”