[英]Cannot pass array from getStaticProps in Next.js
When I pass a JSON array from getStaticProps in Next.js, I get the following error on accessing it.当我从 Next.js 中的 getStaticProps 传递 JSON 数组时,访问它时出现以下错误。
TypeError: Cannot read property 'contentBody' of undefined
module.exports../pages/[author]/[article].js.__webpack_exports__.default
./pages/[author]/[article].js:17
14 | <img/>
15 | </Center>
16 | <Center className={Style.contentContainer}>question
> 17 | <Content>
| ^ 18 | {
19 | `${props.posts.contentBody}`
20 | }
The code: pages/[author]/[article].js
代码:
pages/[author]/[article].js
import Center from "../../components/Center/Center";
import Style from "../../modules/article.module.css"
import React from "react"
import CommonContainer from "../../components/CommonContainer/CommonContainer";
import Content from "../../components/Content/Content";
//static content
import fs from 'fs'
import path from 'path'
export default (props) => {
return (
<CommonContainer>
<Center className={Style.mainImg}>
<img/>
</Center>
<Center className={Style.contentContainer}>
<Content>
{
`${props.posts.contentBody}`
}
</Content>
</Center>
</CommonContainer>
)
}
export async function getStaticProps({params}) {
const articlePath = path.join(process.cwd(), `SampleArticles/${params.author}/${params.article}.json`);
let posts = JSON.parse(fs.readFileSync(articlePath).toString());
return {
props: {
posts,
},
}
}
export async function getStaticPaths() {
return {
paths: [],
fallback: true
};
}
JSON FILE JSON 文件
{
"title": "rust",
"author": "AniketFuryRocks",
"image": {
"src": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Norco_Range.jpg/2560px-Norco_Range.jpg"
},
"contentBody": [
"as","asd"
]
}
Because your posts
object is an array, I would recommend trying to use an index value to access the first value in your posts
object.因为您的
posts
object 是一个数组,所以我建议您尝试使用索引值来访问您的posts
object 中的第一个值。
Something like this:像这样的东西:
`${props.posts[0].contentBody}`
you have to add curly brackets {}
to wrap props
(ln. 1 below), it should be:您必须添加花括号
{}
来包装props
(下面的 ln.1),它应该是:
export default ({ props }) => {
return (
<CommonContainer>
<Center className={Style.mainImg}>
<img/>
</Center>
<Center className={Style.contentContainer}>
<Content>
{
`${props.posts.contentBody}`
}
</Content>
</Center>
</CommonContainer>
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.