【发布时间】:2021-03-10 22:31:52
【问题描述】:
更新到 Gatbsy v3 和 gatsby-plugin-sitemap v3 后出现问题在我的 gatsby-config.js 中,我有站点地图的配置:
{
resolve: 'gatsby-plugin-sitemap',
options: getSitemapForLanguage('en'),
},
{
resolve: 'gatsby-plugin-sitemap',
options: getSitemapForLanguage('de'),
},
我得到了以下函数,它根据传递的语言生成站点地图:
const getSitemapForLanguage = lang => ({
output: `/${lang === 'en' ? '' : lang}/sitemap.xml`,
query: `
{
site {
siteMetadata {
siteUrl
}
}
allMdx(
filter: {frontmatter: {seo: {exclude_from_sitemap: {ne: true}}, languages: {in: "${lang}"}}}
) {
edges {
node {
frontmatter {
pathname
}
}
}
}
}`,
serialize: ({ site, allMdx }) =>
allMdx.edges.map(edge => ({
url: `${site.siteMetadata.siteUrl}${lang === 'en' ? '' : `/${lang}`}${
edge.node.frontmatter.pathname
}`,
changefreq: 'daily',
priority: 0.7,
})),
});
我使用用于 graphql 的浏览器内 IDE 创建了这个,当你运行 gatsby develop 时你会得到它。在那个 IDE 中,我可以看到结果和我需要的一切,但是当我尝试构建它时,我得到:
TypeError: Cannot use 'in' operator to search for 'nodes' in undefined
Error of failed build process
出于测试目的,我删除了查询中的, languages: {in: "${lang}"} 部分,但它仍然不起作用。
【问题讨论】: