【问题标题】:Create React App http-proxy-middleware not working创建 React App http-proxy-middleware 不工作
【发布时间】: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)没有被使用。

我不禁想到这里缺少一些非常简单的东西,但目前正在努力让它发挥作用。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: node.js reactjs express create-react-app http-proxy-middleware


    【解决方案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,
            })
          );
        };
        

        【讨论】:

          猜你喜欢
          • 2020-03-26
          • 2022-07-13
          • 2020-12-11
          • 2021-04-08
          • 2021-04-18
          • 1970-01-01
          • 1970-01-01
          • 2021-01-01
          • 1970-01-01
          相关资源
          最近更新 更多