使用代理时,带有 Rocket 后端的 React 应用程序给出 ECONNREFUSED

React app with Rocket backend giving ECONNREFUSED when using proxy

我正在尝试使用 rocket 为后端制作一个网络应用程序,并为前端做出反应。但是,当我尝试制作代理时,我不断收到 rayk@pop-os:~/repos/homrs/frontend$ curl http://localhost:3000/api Proxy error: Could not proxy request /api from localhost:3000 to http://localhost:8000 (ECONNREFUSED).

我目前尝试的是将 "proxy": "http://localhost:8000" 添加到应用程序中的 package.json 并且我一直尝试按照此处的建议手动配置代理 https://create-react-app.dev/docs/proxying-api-requests-in-development/#configuring-the-proxy-manually.

这是我用来测试的后端代码:

#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

fn main() {
    rocket::ignite().mount("/api", routes![index]).launch();
}

这是我尝试使用的setupProxy.js

const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
    app.use(
        '/api',
        createProxyMiddleware({
            target: 'http://localhost:8000',
            changeOrigin: true,
        })
    );
};

我也尝试过使用 http://localhost:8000http://localhost:8000/。我也试过将火箭端口从 8000 更改为 3001,但也没有用。

编辑:这是 github 存储库的 link:https://github.com/GimpFlamingo/homrs

这里的人:https://github.com/plouc/mozaik/issues/118 遇到了类似的问题。

我能够重现您的问题并发现将 address = "127.0.0.1" 添加到 Rocket.toml 然后将“代理”设置为“http://127.0.0.1:8080”为我解决了这个问题!