Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

57
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda