无法将请求/推送/身份验证从localhost:3000代理到http:// localhost:5000(ECONNREFUSED)

Maa*_*anu 13 reactjs

我正在尝试使用reactJS和推送器创建一个聊天应用程序,我收到此错误 -

无法将请求/推送/身份验证从localhost:3000代理到 http:// localhost:5000(ECONNREFUSED)

在package.json文件中我已将代理设置为 -

"proxy": "http://localhost:5000"
Run Code Online (Sandbox Code Playgroud)

localhost的定义是127.0.0.1/etc/hosts文件中.
我还检查了端口可用性netstat,但这些似乎都是正确的.有人可以帮忙吗?

小智 21

我在我的 React 应用程序中遇到了同样的问题,我通过在 package.json 文件中的端口号后添加“/”来修复它(所以现在它是:“proxy”:“ http://localhost:5000/ ”)

  • 不要认为这会起作用,因为这只能修复用户在前端使用路由时未添加斜杠的情况。添加斜杠就可以了,这样你就不需要在你的反应应用程序的任何路由中添加开始斜杠 (6认同)

小智 17

我认为您还没有启动后端服务器。尝试同时启动后端和前端服务器。npm start只需简单地在后端和前端运行即可。


小智 12

我遇到了类似的问题,但在 Mac 机器上。我改变localhost127.0.0.1,这对我有用。

对于窗户:

"proxy": {
  "/auth/google": {
    "target": "localhost:5000"
  }
}
Run Code Online (Sandbox Code Playgroud)

对于 Mac:

"proxy": {
  "/auth/google": {
    "target": "http://127.0.0.1:5000"
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

在您的服务器 package.json 中,将 --ignore 客户端添加到您的“开始”或“服务器”脚本中。所以它看起来像这样:

 "scripts": {
 "start": "node index.js",
 "server": "nodemon index.js --ignore client"
 }
Run Code Online (Sandbox Code Playgroud)


Ahm*_*nes 10

在服务器目录中

npm install --save http-proxy-middleware
Run Code Online (Sandbox Code Playgroud)

然后在客户端反应文件夹的 src 目录中创建一个具有此名称的文件:setupProxy.js

在此处输入图片说明

然后添加以下内容

在此处输入图片说明

const proxy = require("http-proxy-middleware");
module.exports = function(app) {
  app.use(proxy("/api/**", { // https://github.com/chimurai/http-proxy-middleware
    target: "http://localhost:5000",
    secure: false
  }));
};
Run Code Online (Sandbox Code Playgroud)

在代理配置中,确保您匹配任何带有双 ** 的路径,而不仅仅是 *

注意:您不会像那样在其他任何地方都需要此代理

注意:删除 package.json 中的任何其他代理设置 有关更多信息,请查看此参考

  • 注意:您不需要将此文件导入到任何地方。当您启动开发服务器时它会自动注册。 (2认同)

Nko*_*ula 7

在您的节点模块中包括

{
...
  "proxy": "http://127.0.0.1:5000"
}
Run Code Online (Sandbox Code Playgroud)

其中 ... 只是意味着您应该将代理 IP 附加到它。

另外,如果您使用的是 axios,则执行axios.post('api/users')工作而不是axios.post('/api/users')


Dev*_*evo 6

对于那些使用 Docker 的人来说,如果你的docker-compose.yml样子是这样的:

services:
  app:
    ...
    depends_on:
      - api
    ports:
      - 3000:xxxx
    ...
  api:
    ...
    ports:
      - 5000:xxxx
    ...
Run Code Online (Sandbox Code Playgroud)

然后我们应该将代理 URL 设置为

  "proxy": "http://host.docker.internal:5000"
Run Code Online (Sandbox Code Playgroud)


小智 5

在 package.json 文件中,只需在端口号后添加“/”,它就应该可以正常工作。

"proxy": "http://localhost:5000/"
Run Code Online (Sandbox Code Playgroud)


小智 1

如果您无法通过 telnet 连接到端口 5000 上的本地主机(如果没有安装 telnet,您可以下载并使用PuttY ),则意味着服务器未运行。

如果您使用的是 Windows 计算机,请转到在端口 5000 上运行的服务器的 package.json 并更改此行:

"start": "./node_modules/.bin/concurrently \"./node_modules/.bin/nodemon\" \"npm run client\"",
Run Code Online (Sandbox Code Playgroud)

对此:

"start": "./node_modules/.bin/concurrently \"npm run server\" \"npm run client\"",
Run Code Online (Sandbox Code Playgroud)

观察您的构建消息,您应该会看到类似于以下内容的内容:

[0]   ==> API Server now listening on PORT 5000!
[1] Starting the development server...
[1]
[1] Compiled successfully!
[1]
[1] You can now view chat app in the browser.
[1]
[1]   Local:            http://localhost:3000/
[1]   On Your Network:  http://192.168.1.118:3000/
[1]
[1] Note that the development build is not optimized.
[1] To create a production build, use yarn build.
Run Code Online (Sandbox Code Playgroud)