Node.JS中Fetch/Axios连接Strapi服务器端localhost,Next.JS后端SSR请求返回connect ECONNREFUSED,但客户端CSR正常


发布者 ourjs  发布时间 1695021793086
关键字 Node.JS  react hooks  Next.JS 

在一个Next服务器端渲染示例中,采用SSR连接服务器端代码如下:

 export async function getStaticProps() {

try {
const res = await fetch('http://localhost:1337/auth/local', {
method: "post",
    headers: {
     "Content-Type": "application/json",
    },
    body: JSON.stringify({
     identifier: STRAPI_ID,
     password: STRAPI_PWD,
})
})

console.log(res)
} catch(e) {
console.log(e)
}
...

由于未知原因,对 Strapi 的请求仅在 SSR 期间失败。如果在浏览器中打开请求 URL,可以看到数据

 TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11457:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async getStaticProps (webpack-internal:///./pages/preload.js:49:21) {
cause: Error: connect ECONNREFUSED ::1:1337
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 1337
}
}


解决: 与Node V17+ 以后的版本有关,较新的版本 DNS 查找相关做了重大变更。

使用 127.0.0.1 而不是 localhost 解决了问题

 









  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA