Fix sitemap generation if next/headers is used #759
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was looking into issue #692 that I've also seen, if a page uses
next/headers
then the generated sitemap files are empty.Admittedly I don't understand the NextJS internal files that are created, but I did find that:
headers()
is not included (normal behavior): page routes seem to show up in the.next/prerender-manifest.json
fileheaders()
is included:prerender-manifest.json
is mostly empty, but there is another file.next/trace
that seems to include the missing paths.trace
is a line-delimited JSON file, each line contains an array of objects with an optional fieldtags.path
containing the missing pathsThis PR adds parsing of the
trace
file and addition to the manifest. It then uses this as input when building the URL set. I tested against the repro mentioned in #692 (https://github.com/bastienrobert/next-sitemap-generation-with-headers-repro) and it appears to fix the problem.The parsing of the
trace
file could probably use some work (scanning each line instead of splitting on\n
), but I wanted to get this PR up to get some feedback to make sure I'm on the right track.