英文:
TypeError: fields.map is not a function when doing next dynamic sitemap with next-sitemap
问题
我遇到的错误是"field.map is not a function"。我不知道为什么会发生这种情况。有人可以帮我解决吗?
英文:
I am trying to do dynamic sitemap for my site and here is my code:
import { GetServerSideProps } from 'next';
import { getServerSideSitemap, ISitemapField } from 'next-sitemap';
import { makeSlugFromString } from '../../lib/helpers';
import { BaseNCategories } from '../../lib/generalConstants';
export const getServerSideProps = async (ctx: any) => {
const response = await fetch('http://baseapi/v3/category-list');
const categoriesData = await response.json();
const categories: any[] = categoriesData.cat;
const categoryBn = BaseNCategories.filter((baseCategory) => {
return categories.some((category) => category.CategoryID === baseCategory.CategoryID);
});
const fields: ISitemapField[] = categoryBn.map((category) => ({
loc: `baseApi/${makeSlugFromString(category.Slag)}`,
lastmod: new Date().toISOString(),
// priority: 0.7,
// changefreq: 'daily',
}));
console.log({ fields });
return getServerSideSitemap(ctx, fields);
};
export default function Site() {}
The error I'm getting is "field.map is not a function". I don't know why this is happening. Can anyone help me fix this?
答案1
得分: 1
categoryBn不是一个数组
由于categoryBn是通过使用过滤函数从BaseNCategories派生出来的,所以它应该始终是一个数组。然而,为了确保,您可以在创建字段数组之前添加一个检查,以确保categoryBn确实是一个数组。
将这个代码段替换为:
if (!Array.isArray(categoryBn)) {
console.error('categoryBn不是一个数组:', categoryBn);
return { notFound: true }; // 根据需要返回404页或错误页。
}
const fields: ISitemapField[] = categoryBn.map((category) => ({
loc: `baseApi/${makeSlugFromString(category.Slag)}`,
lastmod: new Date().toISOString(),
}));
请注意,我保留了代码中的JavaScript部分,并只翻译了注释和错误消息。
英文:
categoryBn is not an array
Since categoryBn is derived from BaseNCategories using the filter function, it should always be an array. However, to be certain, you can add a check before creating the fields array to ensure categoryBn is indeed an array.
Replace this:
const fields: ISitemapField[] = categoryBn.map((category) => ({
loc: `baseApi/${makeSlugFromString(category.Slag)}`,
lastmod: new Date().toISOString(),
}));
With this:
if (!Array.isArray(categoryBn)) {
console.error('categoryBn is not an array:', categoryBn);
return { notFound: true }; // Return a 404 page or an error page as needed.
}
const fields: ISitemapField[] = categoryBn.map((category) => ({
loc: `baseApi/${makeSlugFromString(category.Slag)}`,
lastmod: new Date().toISOString(),
}));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论