Node.js Next.js-GetStaticPaths类型错误

Node.js Next.js-GetStaticPaths类型错误,node.js,next.js,Node.js,Next.js,我对Next.JS的GetStaticPath有以下问题: 类型错误:cias.map不是函数 有人能帮我吗 代码: 从“React”导入React 从“../../../styles/pages/Container”导入{Container} 从“下一步”导入{GetStaticProps,GetStaticPath} 从“同构取消蚀刻”导入提取 导出常量getStaticPaths:getStaticPaths=async()=>{ const res=等待取数('http://local

我对Next.JS的GetStaticPath有以下问题:

类型错误:cias.map不是函数

有人能帮我吗

代码:

从“React”导入React
从“../../../styles/pages/Container”导入{Container}
从“下一步”导入{GetStaticProps,GetStaticPath}
从“同构取消蚀刻”导入提取
导出常量getStaticPaths:getStaticPaths=async()=>{
const res=等待取数('http://localhost:3000/api/infocadcias')
const cias=wait res.json()
常量路径=cias.map(cia=>({
参数:{id:cia.id.toString()}
}))
返回{路径,回退:false}
}
export const getStaticProps:getStaticProps=async({params})=>{
const res=等待取数(`http://localhost:3000/infocadcias/${params.id}`)
const cia=wait res.json()
返回中央情报局
}
//eslint禁用下一行@typescript eslint/显式模块边界类型
导出默认函数InfoCia({cia}){
返回(
    {cia.map(p=>(
  • 名称:{p.Name}
  • ))}
) }
编辑:我回答了下面的错误问题,但你还是应该看看。您得到该错误是因为
cias
不是数组。如果您仍然没有解决方案,请尝试记录该变量并用结果更新您的问题。它可能类似于
{cias:[…]}
,在这种情况下,您需要将映射更改为
cias.cias.map(…)
或在赋值时分解变量
const{cias}=wait res.json()


getStaticProps
函数中,返回的格式不正确。您需要使用
props
键返回对象,如下所示:

{
  props: {
    cia: cia
  }
}
您可以在此处参考getStaticProps上的NextJS文档:

如果这不能解决问题,您应该确保
await res.json()
正在返回一个数组

更新的完整示例:

从“React”导入React
从“../../../styles/pages/Container”导入{Container}
从“下一步”导入{GetStaticProps,GetStaticPath}
从“同构取消蚀刻”导入提取
导出常量getStaticPaths:getStaticPaths=async()=>{
const res=等待取数('http://localhost:3000/api/infocadcias')
const{cias}=await res.json()
常量路径=cias.map(cia=>({
参数:{id:cia.id.toString()}
}))
返回{路径,回退:false}
}
export const getStaticProps:getStaticProps=async({params})=>{
const res=等待取数(`http://localhost:3000/infocadcias/${params.id}`)
const{cia}=await res.json()
返回{
道具:{
中情局:中情局
}
}
}
//eslint禁用下一行@typescript eslint/显式模块边界类型
导出默认函数InfoCia({cia}){
返回(
    {cia.map(p=>(
  • 名称:{p.Name}
  • ))}
) } ```
编辑:我回答了下面的错误问题,但你还是应该看看。您得到该错误是因为
cias
不是数组。如果您仍然没有解决方案,请尝试记录该变量并用结果更新您的问题。它可能类似于
{cias:[…]}
,在这种情况下,您需要将映射更改为
cias.cias.map(…)
或在赋值时分解变量
const{cias}=wait res.json()


getStaticProps
函数中,返回的格式不正确。您需要使用
props
键返回对象,如下所示:

{
  props: {
    cia: cia
  }
}
您可以在此处参考getStaticProps上的NextJS文档:

如果这不能解决问题,您应该确保
await res.json()
正在返回一个数组

更新的完整示例:

从“React”导入React
从“../../../styles/pages/Container”导入{Container}
从“下一步”导入{GetStaticProps,GetStaticPath}
从“同构取消蚀刻”导入提取
导出常量getStaticPaths:getStaticPaths=async()=>{
const res=等待取数('http://localhost:3000/api/infocadcias')
const{cias}=await res.json()
常量路径=cias.map(cia=>({
参数:{id:cia.id.toString()}
}))
返回{路径,回退:false}
}
export const getStaticProps:getStaticProps=async({params})=>{
const res=等待取数(`http://localhost:3000/infocadcias/${params.id}`)
const{cia}=await res.json()
返回{
道具:{
中情局:中情局
}
}
}
//eslint禁用下一行@typescript eslint/显式模块边界类型
导出默认函数InfoCia({cia}){
返回(
    {cia.map(p=>(
  • 名称:{p.Name}
  • ))}
) } ```
Dylan,我按照你的建议做了,但没用。你能看看我的另一个问题吗?这个注释空间太小,无法编写代码。[我明白了,fetch返回一个属性为
cias
的对象,该属性包含一个数组。将映射更改为
const paths=cias.cias.map(…)
我将更新我的答案以显示这一点。我的答案已更新。我在赋值时进行了分解
const{cias}=wait res json()
为了获得更清晰的结果。仅供参考,您可以编辑当前问题,而不是创建新问题。谢谢,迪伦。我是编程新手:)迪伦,我做了您推荐的