我正在尝试使用 Next.js 和 typescript 创建一个博客,我遇到了 [slug].tsx 的问题,我不断收到以下错误:
发生构建错误错误:未在 getStaticPaths 中为 /blog/[slug] 提供所需参数(slug)作为字符串
我主要关注本教程,这是确切的时间戳:
https ://youtu.be/jJF6oBw1lbo?t=582
在我到达这部分之前,我成功地使用了 Typescript 而不是 javascript 中的教程,现在我无法执行构建。
当我尝试运行“yarn run dev”时,出现以下错误:
TypeError:无法读取未定义的属性“点击”
这是我的 [slug].tsx 代码:
import { GetStaticPaths, GetStaticProps } from 'next'
let client = require('contentful').createClient({
space: process.env.CONTENTFUL_SPACE_ID,
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
})
type Params = {
params: {
slug: string
}
}
export const getStaticPaths: GetStaticPaths = async () => {
let data = await client.getEntries({
content_type: 'article',
});
return {
paths: data.items.map(item => ({
params: {slug: item.fields.slug},
})),
fallback: true,
}
}
export const getStaticProps: GetStaticProps = async ({ params }) => {
let data = await client.getEntries({
content_type: 'article',
'fields.slug': params.slug
})
return {
props: {
article: data.items[0]
}
}
}
export default function Article({ article }) {
return <article>
<h1>{article.fields.title}</h1>
{article.fields.content}
</article>
}
问题是否与 slug 数据类型有关?我应该明确地将其声明为字符串吗?我该怎么做?