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

2022-03-30 00:00:00 reactjs proxy javascript gatsby
使用此入门工具开发Gatsby应用程序 https://github.com/the-road-to-react-with-firebase/react-gatsby-firebase-authentication

我在运行Gatsby Development后尝试访问页面时,在更新节点包后不断收到此HPM错误。项目编译成功,但随后我在浏览器中收到此错误,没有显示任何内容。

尝试代理时出错:本地主机:8000/

终端中的这个:

尝试将请求从本地主机8000代理到http://localhost:4000时出现错误[HPM](ECONNREFUSED

一旦我将其从 gatsby-config.js文件工作并且在浏览器中生成的页面:

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

但是,我在终端中收到以下错误:

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

我想知道代理为什么不工作,以及上面的模块导出到底在做什么。我觉得我正在做的这个变通办法不太好。任何帮助或建议都是最好的!!

Github回购:

GitHub Repo for The project


解决方案

该错误表示在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

希望能有所帮助!

相关文章