如何解决getStaticPaths Next JS 中的未定义路径
我正在尝试执行 getStaticPaths
和 getStaticProps
,但我总是收到一个错误,即 paths
在 getStaticPaths
中未定义。下一个版本目前在 10.0.3
。
这是错误信息
Error: Invalid value returned from getStaticPaths in /properties/[id]. Received undefined Expected: { paths: [],fallback: boolean }
这是我的代码
export async function getStaticPaths() {
try {
const properties = await api.get('/properties',{
headers: generateAuthHeaders(null,'application/json',API_TOKEN)
})
const paths = properties.res.data.propertyDetails.map(value => {
return {
params: { id: value.id }
}
})
return { paths,fallback: false }
} catch (er) {
// do nothing
}
}
export async function getStaticProps({ params }) {
try {
const properties = await api.get(`/properties/${params.id}`,API_TOKEN)
})
return {
props: {
propertyDetails: JSON.parse(JSON.stringify(properties.data.properties))
}
}
} catch (er) {
return {
props: { propertyDetails: false }
}
}
}
解决方法
我看代码的猜测是 getStaticPaths
中的 catch 块正在被输入,并且由于它没有 return 语句,函数结束并默认返回 undefined
。
所以你需要返回一些东西,就像这样......
export async function getStaticPaths() {
try {
const properties = await api.get('/properties',{
headers: generateAuthHeaders(null,'application/json',API_TOKEN)
})
const paths = properties.res.data.propertyDetails.map(value => {
return {
params: { id: value.id }
}
})
return { paths,fallback: false }
} catch (er) {
console.error(er)
return { paths: [],fallback: false } // <- ADDED RETURN STMNT
}
}
我不熟悉 getStaticPaths
API,因此您可能需要为 paths
返回 something(不是空数组)。所以这段代码很可能不起作用,但我只是指出您需要以您收到的错误消息中指定的形式返回一个对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。