无法使用 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
.
我正在尝试使用 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
.