创建 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.0http-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'”