Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

56
Views
Solo una página generada en el mapa del sitio con gatsby-plugin-sitemap

No puedo crear un mapa del sitio para mi sitio de Gatsy.

La configuración predeterminada del complemento crea solo una página, incluso si hay varias páginas:

 <sitemap> <loc>https://www.thesite.nl/sitemap/sitemap-0.xml</loc> </sitemap>

Si trato de anular la configuración predeterminada con:

 query: `{ site { siteMetadata { siteUrl } } allSitePage { nodes { path } } }`, serialize: ({ site, allSitePage }) => allSitePage.nodes .filter(node => { const path = node.path console.log({ path }) // Filter out 404 pages if (path.includes("404")) { return false } // Filter out base pages that don't have a language directory return supportedLanguages.includes(path.split("/")[1]) }) .map(node => { return { url: `${site.siteMetadata.siteUrl}${node.path}`, changefreq: `weekly`, priority: 0.7, } }),

Obtengo TypeError: Cannot read property 'nodes' of undefined El problema es que con el desarrollo de gatsby puedo consultar los nodos como este y obtener las rutas incluso si dice indefinido aquí.

Tengo Gatsby v3 y el único complemento que creo que podría afectar podría ser "gatsby-plugin-intl": "^0.3.3", .

 { resolve: `gatsby-plugin-intl`, options: { // language JSON resource path path: `${__dirname}/src/intl`, // supported language languages: [`nl`, `en`], language: `nl`, // language file path defaultLanguage: `nl`, // option to redirect to `/nl` when connecting `/` redirect: false, }, },

¿Algunas ideas?

Lo compré a través de opciones personalizadas con gatsby build && gatsby serve después de la sugerencia de @FerranBuireu de cambiar la consulta y ahora se ve así, pero el mapa del sitio aún está vacío:

 const siteUrl = process.env.URL || `https://www.thesite.nl` { resolve: "gatsby-plugin-sitemap", options: { query: ` { allSitePage { nodes { path } } } `, resolveSiteUrl: () => siteUrl, resolvePages: ({ allSitePage: { nodes: allPages } }) => { return allPages.map(page => { return { ...page } }) }, serialize: ({ path }) => { return { url: path, } }, }, },
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Creo que su problema se debe a que no está configurando resolveSiteUrl y, en este escenario, siteUrl debe estar presente. Según los documentos :

 siteMetadata: { // If you didn't use the resolveSiteUrl option this needs to be set siteUrl: `https://www.example.com`, },

Una configuración completa ideal debería ser:

 const siteUrl = process.env.URL || `https://fallback.net` // In your gatsby-config.js module.exports = { plugins: [ { resolve: "gatsby-plugin-sitemap", options: { query: ` { allSitePage { nodes { path } } allWpContentNode(filter: {nodeType: {in: ["Post", "Page"]}}) { nodes { ... on WpPost { uri modifiedGmt } ... on WpPage { uri modifiedGmt } } } } `, resolveSiteUrl: () => siteUrl, resolvePages: ({ allSitePage: { nodes: allPages }, allWpContentNode: { nodes: allWpNodes }, }) => { const wpNodeMap = allWpNodes.reduce((acc, node) => { const { uri } = node acc[uri] = node return acc }, {}) return allPages.map(page => { return { ...page, ...wpNodeMap[page.path] } }) }, serialize: ({ path, modifiedGmt }) => { return { url: path, lastmod: modifiedGmt, } }, }, }, ], }

Ajústelo y adáptelo para que se ajuste a su consulta.

Yo haría algo como:

 resolveSiteUrl: () => siteUrl, resolvePages: ({ allSitePage: { nodes: allPages }, }) => { const sitePageNodeMap = allSitePage.reduce((acc, node) => { const { uri } = node acc[uri] = node return acc }, {}) return allPages.map(page => { return { ...page, ...sitePageNodeMap[page.path] } }) }, serialize: ({ path, modifiedGmt }) => { return { url: path, lastmod: modifiedGmt, } },
about 4 years ago · Juan Pablo Isaza Report

0

Después del apoyo mental y técnico de Ferran Buireu logré profundizar más.

En la carpeta pública, el mapa del sitio se encontró en sitemap/sitemap-0.xml lo que da la ruta correcta a todas las páginas en thesite.nl/sitemap/sitemap-0.xml

También cabe destacar que <sitemapindex> es un elemento válido que apunta al sitemap-0: https://www.sitemaps.org/protocol.html . La consola de búsqueda de Google todavía quiere el /sitemap/sitemap-0.xml si se envía allí.

Así que parece que la salida de las páginas estuvo allí la mayor parte del tiempo. #estúpido

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!