[英]Next.js Error serializing `.res` returned from `getServerSideProps`
[英]Next.js Error Serializing `results` returned from `getServerSideProps`
我正在使用 Next.js 嘗試getServerSIdeProps
並收到此錯誤:
錯誤:序列化從“/”中的
getServerSideProps
返回的.results
時出錯。 原因:undefined
不能序列化為JSON。 請使用null
或省略此值。
export async function getServerSideProps(context) {
const genre = context.query.genre;
const request = await fetch(
`https://api.themoviedb.org/3${
requests[genre]?.url || requests.fetchTrending.url
}`
).then((res) => res.json());
return {
props: {
results: request.results,
},
};
}
它昨天工作,但今天我收到了這個錯誤。 任何人都可以幫助我嗎?
在將您的數據轉換為 JSON 時,會引發錯誤,因為無法序列化undefined
的值,換句話說,您無法將未定義的對象作為其屬性之一的值轉換為 json。
您需要將undefined
的值轉換為 javascript 的null
值,以便能夠將其序列化為 JSON(將其轉換為 JSON)。
在 javascript 中將undefined
的值轉換為null
的最簡單方法是使用名為Lodash
的庫。 使用以下命令安裝Lodash
:
$ npm install lodash
// or
$ yarn add lodash
之后創建以下函數:
import _ from 'lodash';
function prepareForSerializatoin(obj) {
return obj.mapValues(obj, value => typeof value === 'undefined' ? null : value);
}
最后,在返回響應時使用此 function:
export async function getServerSideProps(context) {
const genre = context.query.genre;
const request = await fetch(
`https://api.themoviedb.org/3${
requests[genre]?.url || requests.fetchTrending.url
}`
).then((res) => res.json());
return prepareForSerializatoin({
props: {
results: request.results,
},
});
}
我有着同樣的問題。 我像底部一樣更改了我的代碼。
但它不起作用。
index.js
import Head from 'next/head'
import Header from '../components/Header'
import Nav from '../components/Nav'
import Result from '../components/Result'
import requests from '../utils/requests'
import _ from 'lodash'
export default function Home(props) {
console.log(props);
return (
<div>
<Head>
<title> Hulu 2.0</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<Header/>
<Nav />
<Result />
</div>
)
}
function prepareForSerializatoin(obj) {
return obj.mapValues(obj, value => typeof value === 'undefined' ? null : value);
}
export async function getServerSideProps(context) {
const genre = context.query.genre;
const request = await fetch(
`https://api.themoviedb.org/3${
requests[genre]?.url || requests.fetchTrending.url
}`
).then((res) => res.json());
return prepareForSerializatoin({
props: {
results: request.results,
},
});
}
類型錯誤: obj.mapValues is not a function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.