gatsbyjs/gatsby · error · Error
The plugin "${ownerName}" created a node of a type owned by
Error message
The plugin "${ownerName}" created a node of a type owned by another plugin.
The node type "${typeName}" is owned by "${existingTypeOwnerNameByTypeName}".
If you copy and pasted code from elsewhere, you'll need to pick a new type name
for your new node(s).
${fullNode ? `The node object passed to "createNode":
${JSON.stringify(fullNode, null, 4)}
` : ``}
The plugin creating the node:
${JSON.stringify(plugin, null, 4)} What it means
Error "The plugin "${ownerName}" created a node of a type owned by another plugin. The node type "${typeName}" is owned by "${existingTypeOwnerNameByTypeName}". If you copy and pasted code from elsewhere, you'll need to pick a new type name for your new node(s). ${fullNode ? `The node object passed to "createNode": ${JSON.stringify(fullNode, null, 4)} ` : ``} The plugin creating the node: ${JSON.stringify(plugin, null, 4)}" thrown in gatsbyjs/gatsby.
Source
Thrown at packages/gatsby/src/redux/reducers/type-owners.ts:37
reportOnce(`No plugin owner for type "${typeName}"`)
return typeOwners
}
const existingOwnerTypes = typeOwners.pluginsToTypes.get(ownerName)
if (!existingOwnerTypes) {
typeOwners.pluginsToTypes.set(ownerName, new Set([typeName]))
} else {
existingOwnerTypes.add(typeName)
}
const existingTypeOwnerNameByTypeName =
typeOwners.typesToPlugins.get(typeName)
if (!existingTypeOwnerNameByTypeName) {
typeOwners.typesToPlugins.set(typeName, ownerName)
} else if (existingTypeOwnerNameByTypeName !== ownerName) {
throw new Error(stripIndent`
The plugin "${ownerName}" created a node of a type owned by another plugin.
The node type "${typeName}" is owned by "${existingTypeOwnerNameByTypeName}".
If you copy and pasted code from elsewhere, you'll need to pick a new type name
for your new node(s).
${
fullNode
? stripIndent(
`The node object passed to "createNode":
${JSON.stringify(fullNode, null, 4)}\n`
)
: ``
}
The plugin creating the node:
View on GitHub (pinned to e85d62f177)
Solutions
- Pick a unique node type name for your plugin's nodes
- Remove copy-pasted createNode calls that duplicate another plugin's type
- Set a plugin-specific typePrefix in the sourcing plugin options
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/gatsby/src/redux/reducers/type-owners.ts:37 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of gatsbyjs/gatsby@e85d62f177 (2026-08-26).
Data as JSON: /api/errors/aca1df866cad04d9.
Report an issue: GitHub.