Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Probs a bug] Totally empty sitemap? Lol? #705

Closed
Tracked by #865
gustaveWPM opened this issue Sep 2, 2023 · 38 comments
Closed
Tracked by #865

[Probs a bug] Totally empty sitemap? Lol? #705

gustaveWPM opened this issue Sep 2, 2023 · 38 comments
Assignees
Labels
bug Something isn't working no-issue-activity

Comments

@gustaveWPM
Copy link

gustaveWPM commented Sep 2, 2023

Hello.

I'm using Next.js 13 with the App Router.
I know that next-sitemap can generate good sitemaps files with this setup.
I've already done this in my current (and first Next.js) project.

I'm doing my best with generateStaticParams, and have an exhaustive output of my paths when I build my Next project.

Output of yarn build:

Route (app)
┌ ● /[locale]
├   ├ /fr
├   └ /en
├ ● /[locale]/[categ]
├   ├ /fr/patch-notes
├   └ /en/patch-notes
├ ● /[locale]/[categ]/[subcateg]
├   ├ /fr/patch-notes/dashboard
├   ├ /fr/patch-notes/discord-bot
├   ├ /en/patch-notes/dashboard
├   └ /en/patch-notes/discord-bot
├ ● /[locale]/[categ]/[subcateg]/[slug]
├   ├ /fr/patch-notes/dashboard/post-01
├   ├ /en/patch-notes/dashboard/post-01
├   ├ /fr/patch-notes/discord-bot/post-01
├   └ /en/patch-notes/discord-bot/post-01
├ ● /[locale]/dashboard
├   ├ /fr/dashboard
├   └ /en/dashboard
├ ○ /apple-icon.png
├ ○ /favicon.ico
└ ○ /icon.svg

●  (SSG)     automatically generated as static HTML + JSON (uses getStaticProps)

Here is sitemap.xml:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</sitemapindex>

(yah, I'm crying)

Moreover, here's the disaster:
As I'm a bit of an idiot (lol), I tend to use the git commit --amend command a lot and I totally lost the original code which was somehow "compatible" (?) with next-sitemap, and which was not generating empty sitemaps.

To be honest, I don't have the courage, nor the knowledge, to understand what's happening to take me from a correct sitemap generation to a totally empty one. ( :'( )

I've made a branch to help you to reproduce and investigate.
https://github.com/Tirraa/dashboard_rtm/tree/next-sitemap-empty-sitemap-issue

ℹ️ It would be also helpful to know how could I investigate myself? I naively assumed that if my routes were displayed correctly in the build output, it should be fine (lol).

Warm regards. ( I'm so sad to have an empty sitemap. :'( )

@gustaveWPM gustaveWPM added the bug Something isn't working label Sep 2, 2023
@gustaveWPM gustaveWPM changed the title [Probs a bug] Totally empty sitemap ? Lol ? [Probs a bug] Totally empty sitemap? Lol? Sep 2, 2023
@RaenonX
Copy link

RaenonX commented Sep 3, 2023

Having the same issue, I thought it's my issue (missing some config) until I see this. Will wait for the inputs here.

@yongyi520
Copy link

Up this, I have the same issue as well

@fgeorgsson
Copy link

Empty sitemap here as well

@letops
Copy link

letops commented Sep 14, 2023

For me it is just happening with the new app directory, I have 2 other projects with this same library and almost exactly the same configuration but they use the old pages directory and they work perfectly

@gustaveWPM
Copy link
Author

gustaveWPM commented Sep 17, 2023

For me it is just happening with the new app directory, I have 2 other projects with this same library and almost exactly the same configuration but they use the old pages directory and they work perfectly

idk why, but it was initially working fine on my project, using the app directory. :/

@sofly
Copy link

sofly commented Sep 20, 2023

Empty sitemap as well

@JJGoogles
Copy link

When can we expect any comment or progress on this issue? We currently have to resort to maintaining the Sitemap manually which is quite cumbersome given that most of our pages are generated based on CMS content.

@gustaveWPM
Copy link
Author

Hmmm...
I think I read somewhere that Next-Sitemap is based on the build-manifest.json file (.next/.build-manifest.json).

It seems that there is a lot more informations in the trace file (.next/trace) that in the build-manifest.json when the SSG from the App Directory's context is used.

Maybe Next-Sitemap was designed to work with Static generation, but not with the SSG one.

@gustaveWPM
Copy link
Author

ping @iamvishnusankar
Have you started to investigate?

@gustaveWPM
Copy link
Author

gustaveWPM commented Sep 22, 2023

Lol. I've done some changes in the architecture of my project, and now the sitemap generation came back.

Created a new branch, in addition of https://github.com/Tirraa/dashboard_rtm/tree/next-sitemap-empty-sitemap-issue

Hope it would help to investigate.

@rafalzawadzki
Copy link

same issue here. Pages marked as Static during the build are in sitemap, but SSG not.
○ (Static) automatically rendered as static HTML (uses no initial props)
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)

@gustaveWPM
Copy link
Author

gustaveWPM commented Sep 24, 2023

Idk why, but I have the impression that if you have a minimum of one "Server" page (nor SSG, nor Static), things go back to normal?

Could someone try creating a dynamic path [stupidworkaround] and putting in an empty page that just returns a div? Just to see.

If it works, you might as well create a dynamic path [notfound] and just put a 404 page into it, in a place where it's not a nuisance to do so.

@rafalzawadzki
Copy link

I have pages of all kinds in my build (two server side and two static) - still doesn't work.

@gustaveWPM
Copy link
Author

gustaveWPM commented Sep 28, 2023

I have pages of all kinds in my build (two server side and two static) - still doesn't work.

Hmm, that's curious.

Does your next build feedback prints something like this?

λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
○ (Static) automatically rendered as static HTML (uses no initial props)
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)

@rafalzawadzki
Copy link

I have pages of all kinds in my build (two server side and two static) - still doesn't work.

Hmm, that's curious.

Does your next build feedback prints something like this?

λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)

○ (Static) automatically rendered as static HTML (uses no initial props)

● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)

Yup, with one more:


ℇ  (Streaming)  server-side renders with streaming (uses React 18 SSR streaming or Server Components)
λ  (Server)     server-side renders at runtime (uses getInitialProps or getServerSideProps)
○  (Static)     automatically rendered as static HTML (uses no initial props)
●  (SSG)        automatically generated as static HTML + JSON (uses getStaticProps)

@nsberrow
Copy link

nsberrow commented Oct 9, 2023

I'm in the same boat, I've tried and tried but I can't get my sitemap to generate all the static paths, also on nextjs13

@nitinTJ
Copy link

nitinTJ commented Oct 26, 2023

Facing the same issue.

@bastienrobert
Copy link

I think it might be related to this issue : #692

@rafalzawadzki
Copy link

Could also be this: #700

@erwannbst
Copy link

Same issue

@agonist
Copy link

agonist commented Dec 6, 2023

I had it working for some time without any issue. And today it decided to not work anymore as mentioned by everyone here.
Trying to retrace what happened. My main changes have been to add trpc and clerk.

In case someone really stuck with it, I've migrate to the official, took me 20 minutes and its smooth.

@AlexanderBich
Copy link

in my case it was related to this: #692

@evertjr
Copy link

evertjr commented Jan 24, 2024

I have one project having issues with sitemap on app router while others works fine, it was driving me crazy, I compared versions and downgraded to 4.1.8 and it seems to be working now. This library seems a little abandoned? The oficial sitemap support from nextjs is very basic, how do you even generate sitemaps for static pages generated at build time @agonist ?

@agonist
Copy link

agonist commented Jan 24, 2024

I have one project having issues with sitemap on app router while others works fine, it was driving me crazy, I compared versions and downgraded to 4.1.8 and it seems to be working now. This library seems a little abandoned? The oficial sitemap support from nextjs is very basic, how do you even generate sitemaps for static pages generated at build time @agonist ?

It depends on how you generate your static page, but on my side, I generate page based on data from my db, so I'm simply generating my sitemap based on the same data I use to generate static page.
Just an example for the idea :

  const tools = await findAllToolsSlugOnly(); // this is my db call

  const allTools = tools.map((t) => {
    const to: R = {
      url: `${site}/ai-tools/${t.slug}`,
      lastModified: new Date(),
      changeFrequency: "daily",
      priority: 0.7,
    };
    return to;
  });

I'm doing something like that. So I have various array of from my static pages for different routes. once setup you don't have to touch it anymore and what's happening is very predictable which make the sitemap less mysterious and give you full control over it. and adding a single regular page just take 10 seconds which is find.

@evertjr
Copy link

evertjr commented Jan 24, 2024

I have one project having issues with sitemap on app router while others works fine, it was driving me crazy, I compared versions and downgraded to 4.1.8 and it seems to be working now. This library seems a little abandoned? The oficial sitemap support from nextjs is very basic, how do you even generate sitemaps for static pages generated at build time @agonist ?

It depends on how you generate your static page, but on my side, I generate page based on data from my db, so I'm simply generating my sitemap based on the same data I use to generate static page. Just an example for the idea :

  const tools = await findAllToolsSlugOnly(); // this is my db call

  const allTools = tools.map((t) => {
    const to: R = {
      url: `${site}/ai-tools/${t.slug}`,
      lastModified: new Date(),
      changeFrequency: "daily",
      priority: 0.7,
    };
    return to;
  });

I'm doing something like that. So I have various array of from my static pages for different routes. once setup you don't have to touch it anymore and what's happening is very predictable which make the sitemap less mysterious and give you full control over it. and adding a single regular page just take 10 seconds which is find.

thanks for the suggestion, I kinda liked how this library used to "just works", but I think it's worth doing some refactoring to use the built in support from nextjs and get more predictable results, I wrote a function to map the static pages from the filesystem, now I just need to include pages generated at build time.

@AtomSpy
Copy link

AtomSpy commented Feb 7, 2024

I'm using Next 14 with the pages folder and I'm getting empty sitemaps too. No errors.

@polvallverdu
Copy link

Getting empty sitemaps even exporting generateStaticParams on my pages. I'm using Next 14 with App directory.

@Dlazder
Copy link

Dlazder commented Mar 12, 2024

you must first build the project, since the library interacts with the .next folder.
Also, I added the option generateIndexSitemap: false, in order for me to create only one sitemap.

module.exports = {
    siteUrl: 'https://aksenov-maksim.ru',
    exclude: ['/robots.txt'],
    outDir: './src/app/',
    generateIndexSitemap: false
};

@InsightfulFuture
Copy link

I'm using Next.js 14 and experiencing the same issue.

@tiste
Copy link

tiste commented Apr 24, 2024

On my side, I had a root layout (on a approuter next.js 14), and when importing import { headers } from "next/headers";, the sitemap were empty.

@berzi
Copy link

berzi commented May 3, 2024

This makes the whole package unusable and there are basically no alternatives around bar manually maintaining a sitemap, which is not acceptable. Nextjs itself pretty much did not go any further than making manual generation easier because this package exists, so it needs to work.

#692 needs to be reopened: it's a very current bug and the ticket was closed automatically because it was ignored. Such a small thing can't make the package entirely useless for so many users.

@Th1nhNg0
Copy link

I got the same bug with next.js 14, currently I was manually code sitemap

@berzi
Copy link

berzi commented May 24, 2024

I worked around this in my case by removing my import { headers } from "next/headers"; import from layout.tsx and using const headers = require('next/headers').headers(); inside the layout function instead.

@travistylervii
Copy link

Same problem in nextjs 14.

@johanazhu
Copy link

I'm using Next.js 14 and experiencing the same issue.

@OzzieOrca
Copy link

Sounds similar to #812.

@RayhanHamada
Copy link

RayhanHamada commented Jul 19, 2024

Currently it's quite useless for me to use this library in next 14 using app router. I'm able to generate static pages using additionalPaths inside next-sitemap.config.js, kinda like this

const globby = require('globby')

const basePath = process.env.NEXT_PUBLIC_URL

/** @type {import('next-sitemap').IConfig} */
module.exports = {
	siteUrl: basePath,
	generateRobotsTxt: true,
	async additionalPaths(config) {
		// get all static pages
		const globResult = await globby(['app/**/!([.*])/page.tsx'])
		const now = new Date().toISOString()

		const pages = globResult
			.filter((e) => !e.includes('['))
			.map((e) => e.replace(/^app/, '').replace('/page.tsx', ''))
			.map((e) => new URL(e, basePath).toString())
			.map((loc) => ({
				loc,
				lastmod: now,
				changefreq: config.changefreq,
			}))

		return [...pages]
	},
	async transform(config, path) {
		const loc = new URL(path, config.siteUrl)

		return {
			loc: loc.toString(),
			changefreq: config.changefreq,
			lastmod: config.lastmod,
		}
	},
}

and since additionaPaths is async i'm planning to do dynamic sitemap from here as well (fetch the data from my CMS).

edit: i got the code for fetching static pages from here

Copy link

Closing this issue due to inactivity.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working no-issue-activity
Projects
None yet
Development

No branches or pull requests