【问题标题】:Could not proxy request /pusher/auth from localhost:3000 to http://localhost:5000 (ECONNREFUSED)无法将请求 /pusher/auth 从 localhost:3000 代理到 http://localhost:5000 (ECONNREFUSED)
【发布时间】:2018-01-04 03:47:08
【问题描述】:

我正在尝试使用 reactJS 和 pusher 创建一个聊天应用程序,但出现此错误-

无法从 localhost:3000 代理请求 /pusher/auth 到 http://localhost:5000 (ECONNREFUSED)

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

"proxy": "http://localhost:5000"

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

【问题讨论】:

  • 你的服务器没有启动,你可能只是 npm start
  • 您找到解决方案了吗?我有同样的问题,这里的答案都不起作用
  • 实际上在我的情况下我遇到了这个问题,因为 URL 错误,例如我使用的是/api/note/<id>/ 而不是/api/notes/<id>/

标签: reactjs


【解决方案1】:

在 package.json 文件中,只需在端口号后添加“/”即可。

"proxy": "http://localhost:5000/"

【讨论】:

    【解决方案2】:

    代理错误:无法将请求 /signup 从 localhost:3000 代理到 http://localhost:8282/。请参阅https://nodejs.org/api/errors.html#errors_common_system_errors 了解更多信息(ECONNREFUSED)。

    我遇到了同样的问题,我只是通过重新启动两个服务器来解决它,你需要运行两个正在运行的服务器。

    谢谢ltr:)

    【讨论】:

      【解决方案3】:

      对于那些正在使用 Docker 的人,如果你的 docker-compose.yml 看起来像:

      services:
        app:
          ...
          depends_on:
            - api
          ports:
            - 3000:xxxx
          ...
        api:
          ...
          ports:
            - 5000:xxxx
          ...
      

      那么我们应该将代理URL设置为

        "proxy": "http://host.docker.internal:5000"
      

      【讨论】:

      【解决方案4】:

      localhost 更改为[::1] 解决了我的问题。

      取自这里https://forum.vuejs.org/t/proxy-error-with-vue-config-js-and-axios/110632/4?u=mahmoodvcs

      【讨论】:

        【解决方案5】:

        这与 create-react-app 的默认设置有关。

        我从Github Issue 找到了解决方案。阅读 2018 年 3 月 15 日 danielmahon 的回复

        "proxy": {
            "/api": {
              "target": "https://localhost:5002",
              "secure": false
            }
          },
        
        

        【讨论】:

          【解决方案6】:

          如果您不在服务器端同时使用,则只需分别运行每个前端和后端,以便服务器端首先运行,客户端最后运行。

          【讨论】:

          • 谢谢!这个答案实际上帮助了我。
          【解决方案7】:

          我认为您尚未启动后端服务器。尝试同时启动后端和前端服务器。只需在后端和前端运行npm start

          【讨论】:

            【解决方案8】:

            在我的情况下,问题是我一直在使用错误的名称访问 PORT,我使用的是 PORT 而不是 SERVER_PORT,这是我正确的环境变量名称。所以这个问题意味着你的代码有问题,在我的例子中,服务器应该运行的端口是未定义的。

            【讨论】:

              【解决方案9】:

              在你的节点模块中包含

              {
              ...
                "proxy": "http://127.0.0.1:5000"
              }
              

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

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

              【讨论】:

              • 我正在使用 fetch 所以我应该使用 '/' 还是不使用
              【解决方案10】:

              我的问题是尝试在 docker 容器打开的情况下运行我的 react 项目。

              更改端口或关闭容器。

              【讨论】:

                【解决方案11】:

                使用 “代理”:“http://localhost:PORT_NUMBER/ 在 package.json 中

                在 axios 后端调用路由中 使用 axios.get("api/user/getinfo") 而不是 axios.get("/api/user/getinfo");

                【讨论】:

                  【解决方案12】:

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

                  【讨论】:

                  • 不要认为这会起作用,因为这只会在用户在前端使用路由时不添加斜线时修复。添加斜杠就可以了,因此您无需在您的反应应用程序中的任何路线中添加开头的斜杠
                  【解决方案13】:

                  在服务器目录中

                  npm install --save http-proxy-middleware
                  

                  然后用这个名字创建一个文件:setupProxy.js 在客户端 react 文件夹的 src 目录中

                  然后添加以下内容

                  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
                    }));
                  };
                  

                  在代理配置中确保您匹配任何路径 不仅有双** *

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

                  注意:删除 package.json 中的任何其他代理设置 更多信息请查看reference

                  【讨论】:

                  • 注意:您不需要在任何地方导入此文件。启动开发服务器时会自动注册。
                  【解决方案14】:

                  我认为服务器无法正常工作,您应该同时运行客户端和服务器,以便在 package.json 文件中添加以下程序

                  1) 并发安装

                  npm install concurrently --save
                  

                  2) 配置客户端和服务器

                  "server": "nodemon server.js",
                  "client": "npm start --prefix client"
                  

                  3) 并发配置

                  "dev": "concurrently "npm run server" "npm run client""
                  

                  【讨论】:

                    【解决方案15】:

                    我遇到了类似的问题,但在 Mac 机器上。我将localhost 更改为127.0.0.1,这对我有用。

                    对于窗户:

                    "proxy": {
                      "/auth/google": {
                        "target": "localhost:5000"
                      }
                    }
                    

                    对于 Mac:

                    "proxy": {
                      "/auth/google": {
                        "target": "http://127.0.0.1:5000"
                      }
                    }
                    

                    【讨论】:

                    • 这个太棒了!
                    【解决方案16】:

                    我有类似的问题。 问题是服务器正在侦听 ipv6 ::1 地址 并且代理正在连接到 ipv4 127.0.0.1

                    我将两个地址都从 localhost 更改为 127.0.0.1

                    【讨论】:

                      【解决方案17】:

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

                       "scripts": {
                       "start": "node index.js",
                       "server": "nodemon index.js --ignore client"
                       }
                      

                      【讨论】:

                      • 非常感谢您。我花了几个小时试图修复这个错误。
                      • 你怎么知道这样做的?
                      • 嗨,我不记得我是怎么想出来的了,因为那是很久以前的事了。但我确实记得将问题缩小到 nodemon 并通过互联网查找配置并选择最合乎逻辑的配置进行测试。我希望这能回答你的思维过程问题。最重要的是,我相信正是知道要问什么才能让我找到可接受的解决方案。
                      【解决方案18】:

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

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

                      "start": "./node_modules/.bin/concurrently \"./node_modules/.bin/nodemon\" \"npm run client\"",
                      

                      到这里:

                      "start": "./node_modules/.bin/concurrently \"npm run server\" \"npm run client\"",
                      

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

                      [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.
                      

                      【讨论】:

                        猜你喜欢
                        • 2023-02-02
                        • 2020-01-31
                        • 2018-10-10
                        • 2022-11-22
                        • 2019-07-07
                        • 1970-01-01
                        • 1970-01-01
                        • 2021-09-28
                        • 2020-06-20
                        相关资源
                        最近更新 更多