Ber*_*dar 15 reactjs fetch-api react-dom next.js next.js13
我在尝试 Next 13 beta 版本时,遇到了一个奇怪的问题。我想做的是,在服务器端获取数据并将其显示在页面上。但是,“获取”操作在服务器端失败。以下是 Next.js 页面的代码。它位于“app”目录下,如“app/pageName/page.js”
import React from 'react'
async function callApi() {
const data = await fetch('https://api-psepeti.herokuapp.com/api/items/?search=yil');
return data.json();
}
export default async function Page() {
const data = await callApi();
return (
<main>
{data.results && data.results.map((product, index) => (
<h1>{product.title}</h1>
))}
</main>
)
}
Run Code Online (Sandbox Code Playgroud)
单击查看错误消息。(UND_ERR_CONNECT_TIMEOUT)
注意:获取操作在大约 10 秒后失败。
我做了什么:
版本:
操作系统:M1 IOS (Ventura 13.1)
接下来的config.js:
const nextConfig = {
experimental: {
appDir: true,
enableUndici: true
},
}
module.exports = nextConfig
Run Code Online (Sandbox Code Playgroud)
getStaticPropsPS:棘手的部分是在 Next 12 中一切都运行良好,但在 Next 13 中则不然。当我们使用和在 Next12 中执行相同的操作时getServerSideProps,它运行得很好。
错误应该没问题,在浏览器中尝试您的请求:
(更新:这是您提供的旧服务器网址,我无法使用,同时我的浏览器声称这是一个“安全风险”,所以我在这里完全删除了该链接...)
返回“无法连接”,这意味着应该有错误。
一般来说,您必须用awaittry/catch 包装所有内容,以避免未处理的错误,我认为这将为您提供更准确的信息。
try{
/* await here */
} catch(error: any|unknown){
/* handle error */
}
Run Code Online (Sandbox Code Playgroud)
另外:我知道开发就像 axio 一样,但是fetch已经集成了,所以我尽量避免添加另一个库,与现有库做同样的事情。
| 归档时间: |
|
| 查看次数: |
11162 次 |
| 最近记录: |