Raise error for duplicate content entry slugs (#7352)
* chore: throw error on dup slugs * chore: move to ErrorData * fix: remove unknownerror * chore: changeset
This commit is contained in:
parent
777e5d7587
commit
0a8d178c90
3 changed files with 27 additions and 0 deletions
5
.changeset/yellow-icons-attack.md
Normal file
5
.changeset/yellow-icons-attack.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'astro': patch
|
||||
---
|
||||
|
||||
Raise error when multiple content collection entries have the same slug
|
|
@ -166,6 +166,16 @@ export async function getStringifiedLookupMap({
|
|||
fileUrl: pathToFileURL(filePath),
|
||||
contentEntryType,
|
||||
});
|
||||
if (lookupMap[collection]?.entries?.[slug]) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.DuplicateContentEntrySlugError,
|
||||
message: AstroErrorData.DuplicateContentEntrySlugError.message(collection, slug),
|
||||
hint:
|
||||
slug !== generatedSlug
|
||||
? `Check the \`slug\` frontmatter property in **${id}**.`
|
||||
: undefined,
|
||||
});
|
||||
}
|
||||
lookupMap[collection] = {
|
||||
type: 'content',
|
||||
entries: {
|
||||
|
|
|
@ -1112,6 +1112,18 @@ See https://docs.astro.build/en/guides/server-side-rendering/ for more informati
|
|||
},
|
||||
hint: 'Ensure your data entry is an object with valid JSON (for `.json` entries) or YAML (for `.yaml` entries).',
|
||||
},
|
||||
/**
|
||||
* @docs
|
||||
* @description
|
||||
* Content collection entries must have unique slugs. Duplicates are often caused by the `slug` frontmatter property.
|
||||
*/
|
||||
DuplicateContentEntrySlugError: {
|
||||
title: 'Duplicate content entry slug.',
|
||||
code: 9008,
|
||||
message: (collection: string, slug: string) => {
|
||||
return `**${collection}** contains multiple entries with the same slug: \`${slug}\`. Slugs must be unique.`;
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* @docs
|
||||
|
|
Loading…
Reference in a new issue