错误:
ERROR connect ECONNREFUSED ::1:80 18:06:00
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16)
这个报错也是一直困扰了我许久,服务端一直打印这个报错,但是页面数据响应又都正常,起初真不知道是因为什么原因,能看出来他是在调用80端口, 但是不明白为什么会调用80端口。一度以为是config.js里面配置问题,所以解决的思路就一直在考虑配置方面,端口等方面。
最后发现都没有效果,在网上也查了各种类似的报错问题,解决方案也都不在点子上。考虑到我的config配置都是按官方模板配置的,应该不会出问题,所以考虑到换个方向去解决。
最后突然想到之前了解过nuxt的生命周期,beforeCreated 和 created 是同时运行在服务端和客户端上的,mounted以后才会运行在客户端。
那么问题关键就找到了,之前spa项目在created生命周期里请求数据,我使用的三方axios,那么整体转为ssr,为避免大量改动,就还是使用的三方axios,接口 /api/user ,现在这个会跑在服务端,那么superagent 内部是用的node url parse 去解析你的这个 /api 参数的,然后再传给相应的如 http request,所以默认就是80端口。
问题原因找到了,那我们就需要改下生命周期就行了,让原先项目里在created里请求数据,全部改成mounted里去请求。果然问题就解决了