无法使用 next-sitemap 在 nextjs 上创建站点地图

Cannot create sitemaps on nextjs with next-sitemap

我正在尝试使用 next-sitemap 为我的 next-js 站点创建动态站点地图,但我 运行 遇到了问题。

我已经按照文档创建了以下内容

//pages/server-sitemap-index.xml/index.js
import axios from "axios";
import { getServerSideSitemapIndex } from "next-sitemap";

export const getServerSideProps = async (ctx) => {
  const res = await axios(`${process.env.API_ROOT}/books`);
  const { data } = res.data;
  const fields = data.map((item) => ({
    loc: `${process.env.NEXTAUTH_URL}/${item.slug}`,
    lastmod: item.updatedAt,
    priority: 0.7,
    changefreq: "daily",
  }));

  console.log({ fields });
  return getServerSideSitemapIndex(ctx, fields);
};

export default function SitemapIndex() {}

上面代码中的console.log产生(如预期)

{
  fields: [
    {
      loc: 'http://localhost:3000/The-river-between-3pgkgy',
      lastmod: '2022-03-16T16:02:06.000Z',
      priority: 0.7,
      changefreq: 'daily'
    },
    {
      loc: 'http://localhost:3000/The-river-between-0tqwkgy',
      lastmod: '2022-03-16T16:02:06.000Z',
      priority: 0.7,
      changefreq: 'daily'
    },
    {
      loc: 'http://localhost:3000/The-river-between-tqwkgy',
      lastmod: '2022-03-16T16:02:06.000Z',
      priority: 0.7,
      changefreq: 'daily'
     }
  ]
}

然而,http://localhost:3000/server-sitemap-index.xml 产生:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>[object Object]</loc>
</sitemap>
<sitemap>
<loc>[object Object]</loc>
</sitemap>
<sitemap>
<loc>[object Object]</loc>
</sitemap>
</sitemapindex>

xml 未正确填充。我使用的是 javascript,而不是像 docs 中的示例那样的打字稿。这真的是问题所在吗?

Ps:所有其他站点地图(不是动态的)都可以正常显示。

好的,所以我找到了问题。

我需要导入正确的模块,next-sitemap 有两个 API。

import { getServerSideSitemapIndex ,getServerSideSitemap } from "next-sitemap";

你需要getServerSideSitemap.