3

目前我在为gatsby-starter-blog生成 sitemap.xml 时遇到问题。http://localhost:8000/sitemap.xml仍然没有找到。

我已经在做什么:

  • npm install gatsby-plugin-sitemap
  • 添加网站元
siteMetadata: 
{
    siteUrl: 'http://www.localhost:8000',
  },
plugins: [ 
  {
    resolve: 'gatsby-plugin-sitemap',          
  },
]
  • 这是我的 gatsby-node.js 代码
const sm = require(`sitemap`)


//const pages = edge.node.frontmatter.path
function pagesToSitemap(pages) {
  const urls = pages.map((p) => {
    if (p.path !== undefined) {
      return {
        url: p.path,
        changefreq: 'daily',
        priority: 0.7
      }
    }
  })
  // remove undefined (template pages)
  return urls.filter(u => u !== undefined)
}

function generateSiteMap(pages) {
  const sitemap = sm.createSitemap({
    hostname: 'http://localhost:8000',
    cacheTime: '60000',
    urls: pagesToSitemap(pages),
  })  
  fs.writeFileSync(
    `${__dirname}/public/sitemap.xml`,
    sitemap.toString()
  )
}

exports.onPostBuild = ({pages, callback}) => {  
  generateSiteMap(pages)
  callback()
}
4

1 回答 1

2

onPostBuild仅在构建过程中调用,而不是开发,看起来您还没有运行。尝试运行gatsby build,然后您的onPostBuild实现将运行。

于 2017-09-14T06:16:08.687 回答