在一个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 解决了问题
回复 (0)
微信扫码 立即评论