我正在尝试执行 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}`, {
headers: generateAuthHeaders(null, 'application/json', API_TOKEN)
})
return {
props: {
propertyDetails: JSON.parse(JSON.stringify(properties.data.properties))
}
}
} catch (er) {
return {
props: { propertyDetails: false }
}
}
}
答案 0 :(得分:0)
我看代码的猜测是 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(不是空数组)。所以这段代码很可能不起作用,但我只是指出您需要以您收到的错误消息中指定的形式返回一个对象。