Gatsby错误[HPM]尝试将请求/从localhost:8000代理到http:// localhost:4000时发生错误(ECONNREFUSED)

时间:2019-06-29 19:22:59

标签: javascript reactjs proxy gatsby

使用此入门工具开发Gatsby应用 https://github.com/the-road-to-react-with-firebase/react-gatsby-firebase-authentication

在运行Gatsby Develop后尝试访问页面时,更新节点程序包后,我仍然收到此HPM错误。该项目成功编译,但是随后在浏览器中出现此错误,但未显示任何内容。

  

尝试代理到localhost:8000 /

时发生错误

,并在终端中:

  

错误[HPM]尝试将请求/从localhost:8000代理到http://localhost:4000时发生错误(ECONNREFUSED

一旦我将其从 module.exports = { developMiddleware: app => { app.use( proxy({ target: "http://localhost:4000", }) ) }, } 文件可以正常工作,并在浏览器中生成页面:

@inject

但是,然后在终端中出现此错误:

  

在“ /404.html”中加载页面查询结果时出错。该查询未运行,并且找不到缓存的结果。   找不到页面/404.html

我想知道代理为什么不起作用,以及上述模块出口到底在做什么呢。我觉得我正在执行的变通办法不好。任何帮助或建议都很好!

Github存储库:

GitHub Repo for The project

2 个答案:

答案 0 :(得分:1)

该错误表示http://localhost:4000上没有任何运行。您的设置似乎有一些问题:

首先,您的developMiddleware设置指向http://localhost:4000,但是默认情况下,您的服务器(server.js)在http://localhost:3000上运行。也许您忘记了启动服务器,还是在错误的端口上启动了它?

第二,如果我没看错的话,在您的代理中间件中,您是在代理通向端口4000的每条路由吗?这将使盖茨比毫无用处。这是一个更好的代理设置示例:

module.exports = {
  developMiddleware: app => {
    app.use(
      "/api",
      proxy({
        target: "http://localhost:4000",
      })
    )
  },
}

这样,只有对localhost:8000/api的请求才会被代理到localhost:4000

希望有帮助!

答案 1 :(得分:0)

在尝试使用VS Code和WSL2 Ubuntu-20.04环境调试Angular和Node.js时,我确实犯了同样的错误ECONNREFUSED。显然,这是通过添加不推荐使用的useWSL标志来解决的

{
  "type": "node",
  "request": "launch",
  "name": "Launch Node Express via NPM",
  "runtimeExecutable": "npm",
  "useWSL": true,
  "runtimeArgs": ["run-script", "node:debug"],
  "port": 9229
},