使用此入门工具开发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存储库:
答案 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
},