我正在尝试为后端创建一个带有节点/表达式的简单的react应用程序。当我启动我的应用程序时,我会得到以下错误:
Proxy error: Could not proxy request /users from localhost:3000 to http://localhost:5000/.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED).我的前端package.json看起来像这样

前端很简单。fetchUserData()在useEffect()下就是所谓的后端。
import React, { useEffect, useState } from "react";
function App() {
let [userData, setUserData] = useState([{}]);
useEffect(() => {
const fetchUserData = async () => {
const response = await fetch(`/users`);
const data = await response.json();
setUserData(data);
};
fetchUserData();
}, []);
return (
<div>
<h1>Hello React World!</h1>
</div>
);
}
export default App;当我刚开始这个项目的时候,后端是非常无厘头的。如果我直接从浏览器或邮递员请求http://localhost:5000/users,我就可以得到正确的响应:
const express = require("express");
const app = express();
const port = process.env.PORT || 5000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get("/users", (req, res) => {
console.log(req);
res.json({ users: ["Bob", "Sally"] });
});
app.listen(port, () => {
console.log(`Listening on port ${port}`);
});当我试图在http://localhost:3000上加载前端时,会出现错误消息,然后该前端将获取后端资源。我查看了chrome的网络选项卡,由于某种原因,它将转到3000端口,而不是5000端口:

我试过以下几种方法,但没有运气:
编辑1:这个问题把我逼疯了。如果我从package.json中删除代理,将cors添加到服务器端,并使用端点的绝对路径,而不是客户机端获取请求中的相对路径,那么它可以工作。但我更愿意使用相对路径。
import React, { useEffect, useState } from "react";
function App() {
let [userData, setUserData] = useState([{}]);
useEffect(() => {
const fetchUserData = async () => {
const response = await fetch(`http://localhost:5000/users`);
const data = await response.json();
setUserData(data);
};
fetchUserData();
}, []);
return (
<div>
<h1>Hello React World!</h1>
</div>
);
}
export default App;发布于 2022-07-31 17:46:55
我终于开始工作了!
经过大量的实验,我意识到这确实是一个环境问题。这就解释了很多原因,因为我尝试过的许多其他建议都是为其他人工作的,而不是为我工作的。
发生的情况是,我的客户端使用wsl作为终端,而我的后端则使用PowerShell。当我把两个都换成wsl时,它起了作用。或者当我把两个都换成Powershell的时候,它也起作用了。
发布于 2022-07-31 03:49:56
在尝试复制您的问题时,我认为您在代理中有"http://localhost:5000/"“:”/users,但是您也传递了一个对"/users“的获取请求,这将导致一个"http://localhost:5000//users”。
我可以想象,当您试图解决这个问题时,问题是在更改package.json以包含代理之后没有重新启动React,然后在重新启动React时,您已经添加了额外的"/“。
同样,在浏览器console.log中,无论您的代理在哪里,它都会将http://localhost:3000作为地址而不是实际的端点--它可能有点像一条红鲱鱼。
希望它能帮上忙
https://stackoverflow.com/questions/73179887
复制相似问题