Error codes
CKEditor 5 Framework logs errors and warnings to the console. The following list contains more detailed descriptions of those issues.
-
Cannot add keystrokes in an unknown category. Use
addKeystrokeInfoCategory
to add a new category or make sure the specified category exists.Parameters
categoryId : any
The id of the unknown keystroke category.
keystrokes : any
Keystroke definitions about to be added.
-
Cannot add keystrokes to an unknown group.
Use
addKeystrokeInfoGroup
to add a new group or make sure the specified group exists.Parameters
groupId : any
The id of the unknown keystroke group.
categoryId : any
The id of category the unknown group should belong to.
keystrokes : any
Keystroke definitions about to be added.
-
The same
order
value has been set for two (or more) definitions in the AI Assistant feature configuration.Learn more about command definitions and group definitions used in the feature configuration
Parameters
conflictingDefinitions : any
Definitions that have the same
order
value.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get full access at https://ckeditor.com/contact/.
-
AI text adapter plugin has not been added to the editor. Use one of the provided adapter plugins (e.g.
OpenAITextAdapter
if you connect to OpenAI or Azure OpenAI service) or create a custom adapter. -
Sending a request to the AI service API failed.
-
The same
className
in one of thealignment.options
was already declared.Parameters
option : any
First option that declares given
className
.configuredOptions : any
Contents of
alignment.options
.
-
The
className
property has to be defined for all options once at least one option declaresclassName
.Parameters
configuredOptions : any
Contents of
alignment.options
.
-
The same
name
in one of thealignment.options
was already declared. Eachname
representing one alignment option can be set exactly once.Parameters
option : any
First option that declares given
name
.configuredOptions : any
Contents of
alignment.options
.
-
The
name
in one of thealignment.options
is not recognized. The available options are:'left'
,'right'
,'center'
and'justify'
.Parameters
option : any
Options with unknown value of the
name
property.
-
An error thrown when the target type is invalid.
The target should be either:
- a DOM element or an array of DOM elements,
- or a rect instance,
- or
null
, - or a callback that returns one of the above.
-
The annotation already exists in the collection. It can not be added more than once.
-
The annotation does not exist in the collection and cannot be removed.
-
An annotation should always belong only to one annotations UI instance. Check filters that were passed to
activate
methods. -
UI with a given name has been not registered.
-
UI with a given name has been not registered.
-
UI with a given name has been not registered.
-
UI with a given name already registered.
-
The annotations UI plugin should implement
AnnotationsUI
interface. -
The editor passed to
attachToForm()
must implement theElementApi
interface. -
Cannot get elements with the same id for an attribute element without id.
-
The attribute with given key already exists for the given node.
-
The range to change is not flat.
-
Changed node has different attribute value than operation's old attribute value.
-
The string value for a
type
property of theBatch
constructor has been deprecated and will be removed in the near future. Please refer to theBatch
constructor API documentation for more information. -
The
Batch#type
property has been deprecated and will be removed in the near future. UseBatch#isLocal
,Batch#isUndoable
,Batch#isUndo
andBatch#isTyping
instead. -
Thrown when there is an attempt to make changes to the view tree when it is in incorrect state. This may cause some unexpected behaviour and inconsistency between the DOM and the view. This may be caused by:
- calling
change
orforceRender
during rendering process, - calling
change
orforceRender
inside of post-fixer function.
- calling
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get full access at https://ckeditor.com/contact/.
-
The user is not authorized to access the workspace defined in the
ckbox.defaultUploadWorkspaceId
configuration. -
Fetching a list of available categories with which an uploaded file can be associated failed.
-
Image has not been processed yet.
-
The image processing failed.
-
The CKBox feature requires one of the following plugins to be loaded to work correctly:
ImageBlock
,ImageInline
,Image
(loads bothImageBlock
andImageInline
)
Please make sure your editor configuration is correct.
-
The
config.ckbox.tokenUrl
or theconfig.cloudServices.tokenUrl
configuration is required for the CKBox plugin.ClassicEditor.create( document.createElement( 'div' ), { ckbox: { tokenUrl: "YOUR_TOKEN_URL" // ... } // ... } );
-
This error is thrown when, due to a mistake in the way CKEditor 5 was installed, imported, or initialized, some of its modules were evaluated and executed twice. Duplicate modules inevitably lead to runtime errors and increased bundle size.
Check dependency versions
First, make sure that you use the latest version of all CKEditor 5 dependencies. Depending on the installation method, you should check the versions of the
ckeditor5
,ckeditor5-premium-features
, or@ckeditor/ckeditor5-<NAME>
packages. If you cannot update to the latest version, ensure that all the CKEditor 5 packages are in the same version.If you use third-party plugins, make sure to update them, too. If they are incompatible with the version of CKEditor 5 you use, you may need to downgrade the CKEditor 5 packages (which we do not recommend). Ask the plugin's author to upgrade the dependencies, or fork their project and update it yourself.
Check imports
The next step is to look at how you import CKEditor 5 into your project.
The new installation methods are designed to prevent module duplication, so if you are not using them yet, you should consider updating your project. However, several legacy installation methods are still supported for backward compatibility, and mixing them may result in module duplication.
These are the most common import methods of the CKEditor 5 packages.
- New installation methods (NIM) – Imports from the
ckeditor5
andckeditor5-premium-features
packages. - Optimized build for the new installation methods – Imports from the
@ckeditor/ckeditor5-<NAME>/dist/index.js
. - Predefined builds (legacy) – Imports from the
@ckeditor/ckeditor5-build-<NAME>
packages. - Default imports (legacy) – Imports from the
@ckeditor/ckeditor5-<NAME>
packages (default export). src
(legacy) – Imports from the@ckeditor/ckeditor5-<NAME>/src/*
.- DLL builds (legacy) – Imports from the
ckeditor5/build/<NAME>
and@ckeditor/ckeditor5-<NAME>/build/*
.
The best way to avoid duplicate modules is to avoid mixing these installation methods. For example, if you use imports specific to the optimized build, you should use them for all CKEditor 5 packages. In addition, since the Predefined and DLL builds already include the core of the editor, they cannot be used with other types of imports.
Here is a matrix showing which installation methods are compatible with each other:
NIM Optimized build Predefined builds Default imports src
DLL builds NIM ✅ ✅ ❌ ❌ ❌ ❌ Optimized builds ✅ ✅ ❌ ❌ ❌ ❌ Predefined build ❌ ❌ ✅ ❌ ❌ ❌ Default imports ❌ ❌ ❌ ✅ ✅ ❌ src
❌ ❌ ❌ ✅ ✅ ❌ DLL builds ❌ ❌ ❌ ❌ ❌ ✅ If you use any third-party plugins, make sure the way you import them is compatible with the way you import CKEditor 5.
New installation methods and optimized builds
If you use the new installation methods, you should only import code from the
ckeditor5
andckeditor5-premium-features
packages. Do not import code from the@ckeditor/ckeditor5-<NAME>
packages unless you follow the Optimizing build size guide and the imports from the@ckeditor/ckeditor5-<NAME>
packages end with/dist/index.js
.If you use a CDN, ensure that some files are not included twice in your project.
Examples of valid and invalid import paths:
import { ClassicEditor, Highlight } from 'ckeditor5'; // ✅ import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ✅ import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌ import '@ckeditor/ckeditor5-highlight/build/highlight.js'; // ❌
(Legacy) Predefined builds
If you use the Predefined builds, you cannot import any additional plugins. These builds already include the editor's core and selected plugins and importing additional ones will cause some modules to be bundled and loaded twice.
Examples of valid and invalid import paths:
import ClassicEditor from '@ckeditor/ckeditor5-build-classic'; // ✅ import { Highlight } from 'ckeditor5'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌ import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight'; // ❌ import '@ckeditor/ckeditor5-highlight/build/highlight'; // ❌
If you are missing some features from the list of plugins, you should switch to the new installation methods which do not have this limitation. If you cannot migrate to the new installation methods, try the superbuild instead. This build contains all the editor features.
(Legacy) Default imports and `src` imports
If you use the legacy customized installation method, you should only import code from the
@ckeditor/ckeditor5-<NAME>
packages. While you can import code from the@ckeditor/ckeditor5-<NAME>/src/*
files, it is not recommended as it can make migration to the new installation methods more difficult.If you use this installation method, you should not import code from the
ckeditor5
,ckeditor5-premium-features
, or@ckeditor/ckeditor5-build-<NAME>
packages.Examples of valid and invalid import paths:
import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic'; // ✅ import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ✅ import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ✅ (not recommended) import { Highlight } from 'ckeditor5'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌ import '@ckeditor/ckeditor5-highlight/build/highlight'; // ❌
(Legacy) DLL builds
If you are using the legacy DLL builds, you should not import any non-DLL modules.
Examples of valid and invalid import paths:
import 'ckeditor5/build/ckeditor5-dll.js';// ✅ import '@ckeditor/ckeditor5-editor-classic/build/editor-classic.js';// ✅ import '@ckeditor/ckeditor5-highlight/build/highlight.js';// ✅ import { Highlight } from 'ckeditor5'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌ import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌ import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ❌
Reinstall
node_modules
Usually, npm and other package managers deduplicate all packages - for example,
ckeditor5
is only installed once innode_modules/
. However, it is known to fail to do so occasionally.To rule out this possibility, you can try the following:
- Remove the
node_modules
directory. - Remove the
package-lock.json
,yarn.lock
, orpnpm-lock.yaml
files (depending on the package manager used). - Run
npm install
to reinstall all packages. - Run
npm ls
to check how many times packages like@ckeditor/ckeditor5-core
are installed. If they are installed more than once, verify which package causes that.
- New installation methods (NIM) – Imports from the
-
CKFinder requires at least one plugin providing support for images loaded in the editor. Please make sure either:
Image
(which loads both types of images),- or
ImageBlock
, - or
ImageInline
.
is loaded in your editor configuration.
-
The
ckfinder.openerMethod
must be one of: "popup" or "modal". -
An internal
WebSocketGateway
error.This error might occur because of the incorrectly configured
webSocketUrl
*config.cloudServices.webSocketUrl
} or because of the service handling the WebSocket connections being unavailable.The original error is passed in the
error.data.originalError
property. -
An internal reconnection error.
-
The provided
tokenUrl
was not registered byregisterTokenUrl
. -
Cannot connect to the same channelId more than once.
-
Missing service with the given
channelId
. -
Missing service of a given channelId.
-
Unique
collaboration.channelId
configuration is required for defining name for data stores. Note that application instances with the same channelId will share data each other. -
This item's ID should be a string.
-
This item already exists in the collection.
-
The
index
passed toCollection#addMany()
is invalid. It must be a number between 0 and the collection's length. -
The collection cannot be bound more than once.
-
An index or ID must be given.
-
Item not found.
-
Command does not exist.
Parameters
commandName : any
Name of the command.
-
Cannot set a non-existent comment thread as an active. Check if comment thread of the given id is added to the repository.
-
Cannot set a not attached comment thread as an active. Comment thread has to be attached to the target element to set it as active.
-
Cannot set adapter more than once.
-
Adding comment threw an error.
-
Adding comment thread threw an error.
-
Cannot add comment to a non-existent comment thread.
-
Comment author is not defined in Users plugin.
-
Cannot attach a non-existent comment thread.
-
Comment thread with a given id is already added to the repository.
-
Fetching a comment thread failed.
-
Comment id has to be a string.
-
Comment author id has to be a string.
-
Comment content has to be a string.
-
Comment thread id has to be a string.
-
Comment id has to be a string.
-
Comment thread with a given id is not existing.
-
Target is required to open new comment thread.
-
Comment thread with a given id is not added to the editor nor adapter.getCommentThread() is defined. See https://ckeditor.com/docs/ckeditor5/latest/features/collaboration/comments/comments-integration.html.
-
Removing comment resulted in an error.
-
Cannot remove comment from a non-existent comment thread.
-
Removing comment resulted in an error.
-
Cannot remove a non-existent Comment.
-
Cannot remove a non-existent comment thread.
-
Comment thread with a given id is not resolved.
-
Reopening comment thread resulted in an error.
-
Resolving comment thread resulted in an error.
-
Comment thread with a given id has been already resolved.
-
Updating comment resulted in an error.
-
Comment content has to be a string.
-
Cannot update a comment of a non-existent comment thread.
-
Updating comment thread resulted in an error.
-
Cannot update a non-existent Comment.
-
The required component is not registered in the component factory. Please make sure the provided name is correct and the component has been correctly added to the factory.
Parameters
name : any
The name of the missing component.
-
Cannot add multiple editors to the context which is created by the editor.
-
Only a constructor function is allowed as a context plugin.
-
Only a plugin marked as a context plugin is allowed to be used with a context.
-
Trying to add configuration of the same view more than once.
-
Trying to remove the configuration of the view not defined in the stack.
-
Trying to show a stack that does not exist.
-
Trying to register an alias for a dispatcher that nas not been registered.
-
This error occurs when a text node's attribute is to be downcasted by an
Attribute to Attribute converter
. In most cases it is caused by converters misconfiguration when only "generic" converter is defined:editor.conversion.for( 'downcast' ).attributeToAttribute( { model: 'attribute-name', view: 'attribute-name' } ) );
and given attribute is used on text node, for example:
model.change( writer => { writer.insertText( 'Foo', { 'attribute-name': 'bar' }, parent, 0 ); } );
In such cases, to convert the same attribute for both
Element
andText
nodes, text specificAttribute to Element converter
with higher priority must also be defined:editor.conversion.for( 'downcast' ).attributeToElement( { model: { key: 'attribute-name', name: '$text' }, view: ( value, { writer } ) => { return writer.createAttributeElement( 'span', { 'attribute-name': value } ); }, converterPriority: 'high' } ) );
-
This error occurs when a model element is downcasted via
elementToStructure
helper but the element was allowed to host$text
by the model schema.For instance, this may be the result of
myElement
allowing the content of$block
in its schema definition:// Element definition in schema. schema.register( 'myElement', { allowContentOf: '$block', // ... } ); // ... // Conversion of myElement with the use of elementToStructure(). editor.conversion.for( 'downcast' ).elementToStructure( { model: 'myElement', view: ( modelElement, { writer } ) => { // ... } } );
In such case,
elementToElement()
helper can be used instead to get around this problem:editor.conversion.for( 'downcast' ).elementToElement( { model: 'myElement', view: ( modelElement, { writer } ) => { // ... } } );
Parameters
elementName : any
The name of the element the structure is to be created for.
-
Trying to add a converter to an unknown dispatchers group.
-
Trying to register a group name that has already been registered.
-
Some of the model items were not consumed while downcasting the model to view.
This might be the effect of:
- A missing converter for some model elements. Make sure that you registered downcast converters for all model elements.
- A custom converter that does not consume converted items. Make sure that you consumed all model elements that you converted from the model to the view.
- A custom converter that called
event.stop()
. When providing a custom converter, keep in mind that you should not stop the event. If you stop it then the default converter at thelowest
priority will not trigger the conversion of this node's attributes and child nodes.
Parameters
: any
:engine/model/item~Item>} items Items that were not consumed.
-
Filters provided to
writer.createSlot()
are incomplete and exclude at least one children element (one of the children elements would not be assigned to any of the slots).Parameters
element : any
The element of which children would not be properly allocated to multiple slots.
-
Filters provided to
writer.createSlot()
overlap (at least two filters accept the same child element).Parameters
element : any
The element of which children would not be properly allocated to multiple slots.
-
Unknown slot mode was provided to
writer.createSlot()
in downcast converter. -
The definition cannot be handled by the data filter.
Make sure that the registered definition is correct.
-
Retrieving document data for a detached root.
This usually indicates an error as a detached root should be considered "removed" and should not be included in the document data.
-
Cannot get data from a non-existing root. This error is thrown when
DataController#get()
method is called with a non-existent root name. For example, if there is an editor instance with onlymain
root, callingget
like:data.get( { rootName: 'root2' } );
will throw this error.
-
Cannot init data on a non-existent root. This error is thrown when DataController#init() method is called with non-existent root name. For example, if there is an editor instance with only
main
root, callinginit
like:data.init( { main: '<p>Foo</p>', root2: '<p>Bar</p>' } );
will throw this error.
-
Cannot set data on a non-existent root. This error is thrown when the DataController#set() method is called with non-existent root name. For example, if there is an editor instance with only the default
main
root, callingset
like:data.set( { main: '<p>Foo</p>', root2: '<p>Bar</p>' } );
will throw this error.
-
Cannot detach document node.
-
A DOM element to inject the document outline is not provided. Please set the
config.documentOutline.container
configuration option.Parameters
editor : any
Editor instance related to error.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
Restoring gravity for an unknown UID is not possible. Make sure you are using a correct UID obtained from the
overrideSelectionGravity
to restore.Parameters
uid : any
The unique identifier returned by
_overrideGravity
.
-
Range from document selection starts or ends at incorrect position.
-
Invalid attribute name was ignored during rendering.
-
The
dataPipeline:transparentRendering
flag is supported only in the data pipeline. -
The
DomConverter
detected an interactive attribute in the editing pipeline. For the best editing experience, the attribute was renamed todata-ck-unsafe-attribute-[original attribute name]
.If you are the author of the plugin that generated this attribute and you want it to be preserved in the editing pipeline, you can configure this when creating the element using
DowncastWriter
during the model–view conversion. Methods such ascreateContainerElement
,createAttributeElement
, orcreateEmptyElement
accept an option that will disable filtering of specific attributes:const paragraph = writer.createContainerElement( 'p', { class: 'clickable-paragraph', onclick: 'alert( "Paragraph clicked!" )' }, { // Make sure the "onclick" attribute will pass through. renderUnsafeAttributes: [ 'onclick' ] } );
Parameters
domElement : any
The DOM element the attribute was set on.
key : any
The original name of the attribute
value : any
The value of the original attribute
-
While rendering the editor content, the
DomConverter
detected a<script>
element that may disrupt the editing experience. To avoid this, the<script>
element was replaced with<span data-ck-unsafe-element="script"></span>
. -
While rendering the editor content, the
DomConverter
detected a<style>
element that may affect the editing experience. To avoid this, the<style>
element was replaced with<span data-ck-unsafe-element="style"></span>
. -
The Easy Image feature requires one of the following plugins to be loaded to work correctly:
ImageBlock
,ImageInline
,Image
(loads bothImageBlock
andImageInline
)
Please make sure your editor configuration is correct.
-
The marker with the provided name does not exist and cannot be reconverted.
Parameters
markerName : any
The name of the reconverted marker.
-
Configuration property
config.sanitizeHtml
was removed in CKEditor version 43.1.0 and is no longer supported.Please use
config.htmlEmbed.sanitizeHtml
and/orconfig.mergeFields.sanitizeHtml
instead. -
The
config.initialData
option cannot be used together with the initial data passed as the first parameter ofEditor.create()
. -
The editor initial data and initial roots attributes were replaced with the most recent revision data, as the editor data was different from revision data.
This means that the editor data was either outdated (possible due to an error, e.g. the document data has not been saved after last changes during the previous editing session) or the data was post-processed after it was obtained from the editor.
Note, that changes in whitespaces are also considered a difference.
-
The Editor#isReadOnly property is read-only since version
34.0.0
and can be set only usingEditor#enableReadOnlyMode( lockId )
andEditor#disableReadOnlyMode( lockId )
.Usage before version
34.0.0
:editor.isReadOnly = true; editor.isReadOnly = false;
Usage since version
34.0.0
:editor.enableReadOnlyMode( 'my-feature-id' ); editor.disableReadOnlyMode( 'my-feature-id' );
-
Cannot update the source element of a detached editor.
The
updateSourceElement()
method cannot be called if you did not pass an element toEditor.create()
. -
The lock ID is missing or it is not a string or symbol.
-
A DOM element used to create the editor (e.g.
InlineEditor.create()
) has already been used to create another editor instance. Make sure each editor is created with an unique DOM element.Parameters
element : any
DOM element that caused the collision.
-
The
EditorUI#_editableElements
property has been deprecated and will be removed in the near future. Please usesetEditableElement()
andgetEditableElement()
methods instead.Parameters
editorUI : any
Editor UI instance the deprecated property belongs to.
-
The
EditorConfig#toolbar.viewportTopOffset
property has been deprecated and will be removed in the near future. Please useEditorConfig#ui.viewportOffset
instead. -
The error thrown when trying to set the usage data path that was already set. Make sure that you are not setting the same path multiple times.
-
This error is thrown when trying to pass a
<textarea>
element to acreate()
function of an editor class.The only editor type which can be initialized on
<textarea>
elements is the classic editor. This editor hides the passed element and inserts its own UI next to it. Other types of editors reuse the passed element as their root editable element and therefore<textarea>
is not appropriate for them. Use a<div>
or another text container instead:<div id="editor"> <p>Initial content.</p> </div>
-
Function required.
-
The "text" option in the
enablePlaceholder()
function is deprecated and will be removed soon.See the Migration to v39 guide for more information on how to apply this change.
-
An unexpected error happened when the suggestion data was being saved in the database. In order to avoid mismatch between document data and the suggestions database, the suggestion in the document has been automatically discarded.
-
You are using v1 API interface in the
exportWord.converterOptions
. Please update your config with a new version of Export Word API. See migration guide: https://docx-converter.cke-cs.com/v2/convert/docs#section/Export-to-Word/Migrating-from-v1 -
You need to enable an upload adapter in order to be able to upload files.
This warning shows up when
FileRepository
is being used without defining an upload adapter.If you see this warning when using one of the CKEditor 5 Builds it means that you did not configure any of the upload adapters available by default in those builds.
Predefined builds are a deprecated solution and we strongly advise migrating to new installation methods.
See the comprehensive "Image upload overview" to learn which upload adapters are available in the builds and how to configure them.
Otherwise, if you see this warning, there is a chance that you enabled a feature like
ImageUpload
, orImageUploadUI
but you did not enable any upload adapter. You can choose one of the existing upload adapters listed in the "Image upload overview".You can also implement your own image upload adapter.
-
You cannot call read if the status is different than idle.
-
You cannot call upload if the status is different than idle.
-
Problem with decoding Base64 image data.
-
Api address must be provided as the third argument.
-
File must be provided as the first argument.
-
Token must be provided as the second argument.
-
Uploading file failed.
-
This element is already tracked by
FocusTracker
. -
The
View
added to theFocusTracker
does not have anelement
. Make sure the view isrender
before adding it to the focus tracker. -
Provided value as an option for
FontSize
seems to invalid.See valid examples described in the plugin configuration.
-
If
config.fontSize.supportAllValues
istrue
, you need to use numerical values as font size options.See valid examples described in the plugin configuration.
Parameters
presets : any
Invalid values.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
When using the HTML embed feature with the
config.htmlEmbed.showPreviews
set totrue
, it is strongly recommended to define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.For a detailed overview, check the HTML embed feature documentation.
-
The
ImageBlock
plugin must be enabled to allow inserting block images. Seetype
to learn more. -
The
ImageInline
plugin must be enabled to allow inserting inline images. Seetype
to learn more. -
There are two insert-image integrations registered with the same name.
Make sure that you do not load multiple asset manager plugins.
-
The image insert feature requires integrations to be registered by separate features.
The
insertImage
toolbar button requires integrations to be registered by other features. For example ImageUpload, ImageInsert, ImageInsertViaUrl, CKBox -
The insert image feature requires a list of integrations to be provided in the editor configuration.
The default list of integrations is
upload
,assetManager
,url
. Those integrations are included in the insert image dropdown if the given feature plugin is loaded. You should omit theintegrations
configuration key to use the default set or provide a selected list of integrations that should be used. -
The specified insert image integration name is unknown or the providing plugin is not loaded in the editor.
-
The image style definition provided in the configuration is invalid.
Please make sure the definition implements properly one of the following:
Parameters
dropdown : any
The name of the invalid drop-down
style : any
The name of the invalid image style option
-
In order to work correctly, each image style option requires specific model elements (also: types of images) to be supported by the editor.
Model element names to which the image style option can be applied are defined in the
modelElements
property of the style option definition.Explore the warning in the console to find out precisely which option is not supported and which editor plugins are missing. Make sure these plugins are loaded in your editor to get this image style option working.
Parameters
option : any
The name of the unsupported option.
missingPlugins : any
The names of the plugins one of which has to be loaded for the particular option.
-
When configuring
config.image.resizeOptions
for standalone buttons, a validicon
token must be set for each option.See all valid options described in the plugin configuration.
Parameters
option : any
Invalid image resize option.
-
An error occurred while importing the Word file. Check the response from the Cloud Services in the browser's network tab in the developer tools to find out the reason.
-
The import procedure has been cancelled. The position, where the content of the Word file should be inserted, no longer exists, because the document structure has changed. Choose the position again and try to import the Word file again.
-
Cannot attach the same annotation twice.
-
Cannot detach a UI if it is not attached.
-
The
InlineAnnotations
plugin is not allowed as aContext
plugin. It can be used as an editor plugin only. -
Insert bookmark command can be executed only with a valid name.
A valid bookmark name must be a non-empty string and must not contain any spaces.
-
Insertion position is invalid.
-
An internal error occurred when merging inserted content with its siblings. The insertion position should equal the merge position.
If you encountered this error, report it back to the CKEditor 5 team with as many details as possible regarding the content being inserted and the insertion position.
-
Given node cannot be inserted on the given position.
Parameters
node : any
Node to insert.
position : any
Position to insert the node at.
-
Tried to insert an element with insertObject() function that is not defined as an object in schema. See
SchemaItemDefinition
. If you want to insert content that is not an object you might want to use insertContent() function. -
The unsupported
options.setSelection
parameter was passed to the insertObject() function. Check the insertObject() API documentation for allowedoptions.setSelection
parameter values. -
Date format must be a function.
-
The license key provided is invalid. Please ensure that it is copied correctly from the Customer Portal. If the issue persists, please contact our customer support.
-
Unknown key name. Only key names included in the
keyCodes
can be used. -
You have exceeded the operation limit for your development license key within the editor. Please restart the editor to continue using it. Read more about license key types.
-
The provided license does not allow the editor to run on this domain. Some license keys are restricted to local test environments only. For more details, please refer to the license key type documentation.
-
You have exceeded the editor operation limit available for your evaluation license key. Please restart the editor to continue using it. Read more about license key types.
-
Your license key has expired.
If you used our free trial, you either need to switch to open-source license, or in case of a commercial plan, change the trial key to production key or development key. Switching from trial, you also need to align the editor configuration to the features available in your plan.
If you already had one of our Cloud or Custom plans, please renew your license in the Customer Portal.
-
Your license does not allow the current distribution channel.
These are the available distribution channels:
- Self-hosted - the editor is installed via npm or from a ZIP package
- Cloud - the editor is run from CDN
The licenses available include:
- GPL license for open-source users.
- Commercial plans (Cloud or sales-assisted).
The relation between distribution channels and licenses works as follows:
- With the 'GPL' license key, you may use the editor installed via npm or a ZIP package (self-hosted).
- With the CKEditor Cloud plans, you may use the editor via our CDN.
- With the CKEditor Custom plans, depending on your plan details, you can use the editor via npm or a ZIP package (self-hosted) or Cloud (CDN).
Read more about distributions in the documentation. Please verify your installation or contact support for assistance. Should you need to migrate your installation from npm to CDN, please refer to our dedicated migration guides.
-
The
licenseKey
property is missing in the editor configuration.- If you are using the editor in a commercial setup, please provide your license key.
- If you still need to acquire a key, please contact us or create a free account with a 14 day premium features trial.
- If you are using the editor under a GPL license or another license from our Open Source Initiative, use the 'GPL' license key instead.
ClassicEditor.create( document.querySelector( '#editor' ), { licenseKey: '<YOUR_LICENSE_KEY>', // Or 'GPL'. // ... Other configuration options ... } ) ;
-
The plugin you are trying to use is not permitted under your current license. Please check the available features on the Customer Portal or contact support for more information.
Parameters
pluginName : any
The plugin you tried to load.
-
You have exceeded the editor operation limit for your trial license key. Please restart the editor to continue using it. Read more about license key types.
-
You have reached the usage limit of your license key. This can occur in the following situations:
- You are on a free subscription without a connected payment method and have exceeded the allowed usage threshold.
- Your account has overdue invoices and the grace period has ended.
To extend the limit and restore access, please update the required details in the Customer Portal or contact our customer support.
-
Your license key cannot be validated due to a network issue. Please ensure that your setup does not block requests to the validation endpoint.
Parameters
url : any
The URL that was attempted to be reached for validation.
-
The
List
feature can not be loaded together with theLegacyList
plugin.Parameters
conflictPlugin : any
Name of the plugin.
-
The
Locale#language
property was deprecated and will be removed in the near future. Please use theLocale#uiLanguage
andLocale#contentLanguage
properties instead. -
A model position could not be mapped to the view because the parent of the model position does not have a mapped view element (might have not been converted yet or it has no converter).
Make sure that the model element is correctly converted to the view.
-
Cannot use a destroyed marker instance.
-
Marker name cannot contain the "," character.
-
Marker with provided name does not exists.
-
The key-value matcher pattern for
attributes
option is using deprecatedclass
key.Use
classes
matcher pattern option instead:// Instead of: const pattern = { attributes: { key1: 'value1', key2: 'value2', class: 'foobar' } } // Use: const pattern = { attributes: { key1: 'value1', key2: 'value2' }, classes: 'foobar' }
Refer to the Migration to v29.1.0 guide and the
MatcherPattern
documentation.Parameters
pattern : any
Pattern with missing properties.
-
The key-value matcher pattern for
attributes
option is using deprecatedstyle
key.Use
styles
matcher pattern option instead:// Instead of: const pattern = { attributes: { key1: 'value1', key2: 'value2', style: /^border.*$/ } } // Use: const pattern = { attributes: { key1: 'value1', key2: 'value2' }, styles: /^border.*$/ }
Refer to the Migration to v29.1.0 guide and
MatcherPattern
documentation.Parameters
pattern : any
Pattern with missing properties.
-
The key-value matcher pattern is missing key or value. Both must be present. Refer the documentation:
MatcherPattern
.Parameters
pattern : any
Pattern with missing properties.
-
One of the providers (or extra providers) specified in the media embed configuration has no name and will not be used by the editor. In order to get this media provider working, double check your editor configuration.
-
The callback used for obtaining mention autocomplete feed thrown and error and the mention UI was hidden or not displayed at all.
-
The feed item ID must start with the marker character.
Correct mention feed setting:
mentions: [ { marker: '@', feed: [ '@Ann', '@Barney', ... ] } ]
Incorrect mention feed setting:
mentions: [ { marker: '@', feed: [ 'Ann', 'Barney', ... ] } ]
See
MentionConfig
. -
The marker must be a single character.
Correct markers:
'@'
,'#'
.Incorrect markers:
'@@'
,'[@'
.See
MentionConfig
. -
The marker must be a single character.
Correct markers:
'@'
,'#'
.Incorrect markers:
'$$'
,'[@'
.See
MentionConfig
.Parameters
marker : any
Configured marker
-
Adding unsupported components to the
MenuBarView
is not possible.A component should be either a
MenuBarMenuView
(sub-menu) or aMenuBarMenuListItemButtonView
(button).Parameters
componentName : any
A name of the unsupported component used in the configuration.
componentView : any
An unsupported component view.
-
There was a problem processing the configuration of the menu bar. The item with the given name does could not be removed from the menu bar configuration.
This warning usually shows up when the
Plugin
which is supposed to provide a menu bar item has not been loaded or there is a typo in the menu bar configuration.Parameters
menuBarConfig : any
The full configuration of the menu bar.
itemName : any
The name of the item that was not removed from the menu bar.
-
There was a problem processing the configuration of the menu bar. The configured item could not be added because the position it was supposed to be added to does not exist.
This warning usually shows up when the
Plugin
which is supposed to provide a menu bar item has not been loaded or there is a typo in the menu bar configuration.Parameters
menuBarConfig : any
The full configuration of the menu bar.
itemName : any
The name of the item that was not removed from the menu bar.
-
There was a problem processing the configuration of the menu bar. The item with the given name does not exist so it was omitted when rendering the menu bar.
This warning usually shows up when the
Plugin
which is supposed to provide a menu bar item has not been loaded or there is a typo in the menu bar configuration.Make sure the plugin responsible for this menu bar item is loaded and the menu bar configuration is correct, e.g.
BoldUI
is loaded for the'menuBar:bold'
menu bar item.Parameters
menuBarConfig : any
The full configuration of the menu bar.
parentMenuConfig : any
The config of the menu the unavailable component was defined in.
componentName : any
The name of the unavailable component.
-
There was a problem processing the configuration of the menu bar. One of the menus is empty so it was omitted when rendering the menu bar.
This warning usually shows up when some plugins responsible for providing menu bar items have not been loaded and the menu bar configuration was not updated.
Make sure all necessary editor plugins are loaded and/or update the menu bar configuration to account for the missing menu items.
Parameters
menuBarConfig : any
The full configuration of the menu bar.
emptyMenuConfig : any
The definition of the menu that has no child items.
-
The requested data set was not found.
-
Data set ids must be unique.
-
Merge field group ids must be unique.
-
Merge field ids must be unique.
-
Merge field ids can contain only alphanumeric characters, dots, underscores, and hyphens.
-
The merge field prefix and suffix can only contain the following characters:
'"`!#%:;=@{}~$()*+/?[\]^|
. -
The preview mode that was tried to be set was not available. See the preview modes configuration for more information.
-
Invalid preview modes definition. It should be a non-empty array, with one or more of the following values: '$labels', '$defaultValues' and '$dataSets'.
-
Merge field prefix and suffix must be different.
-
The merge field prefix and suffix cannot be longer than 8 characters.
-
When using the merge fields feature with the
config.mergeFields.previewHtmlValues
set totrue
, it is strongly recommended to define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.For a detailed overview, check the Merge fields feature documentation.
-
Merge operation specifies wrong number of nodes to move.
-
Merge source position is invalid. The element to be merged must have a parent node.
-
Merge target position is invalid. The element to be merged must have a parent node.
-
Model#createPositionAt()
requires the offset to be specified when the first parameter is a model item. -
A root with the specified name already exists.
-
Only operations with matching versions can be added to the history.
Parameters
errorData : any
The operation and the current document history version.
-
LivePosition's root has to be an instance of RootElement.
-
Given index cannot be found in the node list.
-
Trying to insert an object which is not a Node instance.
-
Given offset cannot be found in the node list.
Parameters
nodeList : any
Stringified node list.
-
You can not make a position after a root element.
-
You can not make a position before a root element.
-
Cannot create position for document. Root with specified name does not exist.
-
Position parent have to be a model element or model document fragment.
-
The position's path is incorrect. This means that a position does not point to a correct place in the tree and hence, some of its methods and getters cannot work correctly.
Note: Unlike DOM and view positions, in the model, the position's parent is always an element or a document fragment. The last offset in the position's path is the point in this element where this position points.
Read more about model positions and offsets in the Editing engine architecture guide.
Parameters
position : any
The incorrect position.
-
Position path must be an array with at least one item.
-
Position root is invalid.
Positions can only be anchored in elements or document fragments.
-
Trying to add a range that intersects with another range in the selection.
Parameters
addedRange : any
Range that was added to the selection.
intersectingRange : any
Range in the selection that intersects with
addedRange
.
-
Cannot set selection focus if there are no ranges in selection.
-
selection.setTo requires the second parameter when the first parameter is a node.
-
Given
length
value is incorrect. -
Given
offsetInText
value is incorrect. -
Neither boundaries nor starting position of a
TreeWalker
have been defined. -
Only
backward
andforward
direction allowed. -
Cannot move a node from a document to a different tree. It is forbidden to move a node that was already in a document outside of it.
-
Trying to move a range of nodes into one of nodes from that range.
-
The nodes which should be moved do not exist.
-
Trying to move a range of nodes into the middle of that range.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
You cannot disable the
$graveyard
root. -
The root to load was already loaded before. The
loadRoot()
call has no effect. -
The root to load does not exist.
-
Trying to set attributes on a non-existing root.
Roots specified in
rootsAttributes
do not match initial editor roots. -
Editor roots do not match the
initialData
configuration.This may happen for one of the two reasons:
- Configuration error. The
sourceElementsOrData
parameter inMultiRootEditor.create()
contains different roots thaninitialData
configuration. - As the editor was initialized, the
initialData
configuration value or the state of the editor roots has been changed.
- Configuration error. The
-
Cannot attach narrow sidebar twice.
-
Cannot detach not attached sidebar.
-
Properties must be unique.
-
Cannot bind the same property more than once.
-
Cannot bind multiple properties and use a callback in one binding.
-
Binding one attribute to many observables only possible with one attribute.
-
Binding multiple observables only possible with callback.
-
Invalid argument syntax in
to()
. -
The number of properties must match.
-
All properties must be strings.
-
Cannot override an existing property.
This error is thrown when trying to set a property with a name of an already existing property. For example:
let observable = new Model(); observable.property = 1; observable.set( 'property', 2 ); // throws observable.set( 'property', 1 ); observable.set( 'property', 2 ); // ok, because this is an existing property.
-
Properties must be strings.
-
Cannot decorate an undefined method.
Parameters
object : any
The object which method should be decorated.
methodName : any
Name of the method which does not exist.
-
Trying to move a range which starts and ends in different element.
-
Trying to remove a range which starts and ends in different element.
-
The configuration required by the pagination plugin is missing. Follow the instructions provided in Pagination feature documentation to initialize the plugin properly.
Parameters
config : any
Configuration of the editor.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
The message must be a string.
-
Trying to set permissions for a
channelId
that does not exist. -
The
DocumentList
plugin is obsolete. UseList
instead. -
The
DocumentListProperties
plugin is obsolete. UseListProperties
instead. -
The
TodoDocumentList
plugin is obsolete. UseTodoList
instead. -
If a plugin is a context plugin, all plugins it requires should also be context plugins instead of plugins. In other words, if one plugin can be used in the context, all its requirements should also be ready to be used in the context. Note that the context provides only a part of the API provided by the editor. If one plugin needs a full editor API, all plugins which require it are considered as plugins that need a full editor API.
Parameters
plugin : any
The name of the required plugin.
requiredBy : any
The name of the parent plugin.
-
The plugin replacing an existing plugin cannot depend on other plugins.
-
The replaced plugin does not exist in the available plugins collection.
-
The replaced plugin will not be loaded so it cannot be replaced.
-
Two plugins with the same
pluginName
were loaded. This will lead to runtime conflicts between these plugins.In practice, this warning usually means that new plugins were added to an existing CKEditor 5 build. Plugins should always be added to a source version of the editor (
@ckeditor/ckeditor5-editor-*
), not to an editor imported from one of the@ckeditor/ckeditor5-build-*
packages.Check your import paths and the list of plugins passed to
Editor.create()
or specified inEditor.builtinPlugins
.Predefined builds are a deprecated solution and we strongly advise migrating to new installation methods.
The second option is that your
node_modules/
directory contains duplicated versions of the same CKEditor 5 packages. Normally, on clean installations, npm deduplicates packages innode_modules/
, so it may be enough to callrm -rf node_modules && npm i
. However, if you installed conflicting versions of some packages, their dependencies may need to be installed in more than one version which may lead to this warning.Technically speaking, this error occurs because after adding a plugin to an existing editor build the dependencies of this plugin are being duplicated. They are already built into that editor build and now get added for the second time as dependencies of the plugin you are installing.
Parameters
pluginName : any
The duplicated plugin name.
plugin1 : any
The first plugin constructor.
plugin2 : any
The second plugin constructor.
-
A plugin is not available and could not be loaded.
Plugin classes (constructors) need to be provided to the editor before they can be loaded by name. This is usually done in CKEditor 5 builds by setting the
builtinPlugins
property.**If you see this warning when using one of the CKEditor 5 Builds}, it means that you try to enable a plugin which was not included in that build. This may be due to a typo in the plugin name or simply because that plugin is not a part of this build.
Predefined builds are a deprecated solution and we strongly advise migrating to new installation methods.
If you see this warning when using one of the editor creators directly (not a build), then it means that you tried loading plugins by name. However, unlike CKEditor 4, CKEditor 5 does not implement a "plugin loader". This means that CKEditor 5 does not know where to load the plugin modules from. Therefore, you need to provide each plugin through a reference (as a constructor function). Check out the examples in the Quick start guide.
Parameters
plugin : any
The name of the plugin which could not be loaded.
-
The plugin is not loaded and could not be obtained.
Plugin classes (constructors) need to be provided to the editor and must be loaded before they can be obtained from the plugin collection.
Note: You can use
editor.plugins.has()
to check if a plugin was loaded.Parameters
plugin : any
The name of the plugin which is not loaded.
-
The plugin replacing an existing plugin must be a function.
-
The plugin replacing an existing plugin must have a name.
-
The replaced plugin cannot depend on other plugins.
-
Cannot load a plugin because one of its dependencies is listed in the
removePlugins
option.Parameters
plugin : any
The name of the required plugin.
requiredBy : any
The name of the parent plugin.
-
A required "soft" dependency was not found on the plugin list.
When configuring the editor, either prior to building (via
Editor.builtinPlugins
) or when creating a new instance of the editor (e.g. viaconfig.plugins
), you need to provide some of the dependencies for other plugins that you used.This error is thrown when one of these dependencies was not provided. The name of the missing plugin can be found in
missingPlugin
and the plugin that required it inrequiredBy
.In order to resolve it, you need to import the missing plugin and add it to the current list of plugins (
Editor.builtinPlugins
orconfig.plugins
/config.extraPlugins
).Soft requirements were introduced in version 26.0.0. If you happen to stumble upon this error when upgrading to version 26.0.0, read also the Migration to 26.0.0 guide.
Parameters
missingPlugin : any
The name of the required plugin.
requiredBy : any
The name of the plugin that requires the other plugin.
-
The
config.presenceList.collapseAt
configuration value must be a number greater than 0. -
Missing container element for the presence list. Please make sure
config.presenceList.container
is set and refers to an existing DOM element. -
At least one range has to be passed to
Range._createFromRanges()
. -
Trying to use
editor.setData()
oreditor.data.set()
in real-time collaboration. Re-setting data in real-time collaboration usually means a mistake (incorrect integration or plugin). Using it may overwrite local (not yet synchronized) changes on remote clients. If you tried to set editor initial data, useinitialData
configuration option instead. If you tried to set editor data in a plugin, consider applying the changes through theWriter
in amodel.change()
block. If you understand effects of usingeditor.data.set()
in real-time collaboration and want to suppress this error, setsuppressErrorInCollaboration
flag totrue
in the second parameter ofeditor.data.set()
call:editor.data.set( '<p>Your data</p>', { suppressErrorInCollaboration: true } )
. -
Server response error.
-
Trying to set initial data to initialized document.
-
Attempting to init data on a non-existing root.
-
Connecting to the session resulted in an error.
-
Internal
CollaborativeEditingService
error. -
Element to change has different name than operation's old name.
-
Given position is invalid or node after it is not instance of Element.
-
Configuration for revision history plugin is missing.
Please refer to documentation to learn how to set up the plugin.
-
The attribute with given key already exists for the given node.
-
Cannot create RootAttributeOperation for document. Root with specified name does not exist.
-
The element to change is not a root element.
-
The attribute which should be removed does not exist for the given node.
-
Cannot extend an item which was not registered yet.
This error happens when a plugin tries to extend the schema definition of an item which was not registered yet.
Parameters
itemName : any
The name of the model element which is being extended.
-
A single item cannot be registered twice in the schema.
This situation may happen when:
- Two or more plugins called
register()
with the same name. This will usually mean that there is a collision between plugins which try to use the same element in the model. Unfortunately, the only way to solve this is by modifying one of these plugins to use a unique model element name. - A single plugin was loaded twice. This happens when it is installed by npm/yarn in two versions
and usually means one or more of the following issues:
- a version mismatch (two of your dependencies require two different versions of this plugin),
- incorrect imports (this plugin is somehow imported twice in a way which confuses webpack),
- mess in
node_modules/
(rm -rf node_modules/
may help).
Note: Check the logged
itemName
to better understand which plugin was duplicated/conflicting.Parameters
itemName : any
The name of the model element that is being registered twice.
- Two or more plugins called
-
The node after the merge position must be an element.
-
The node before the merge position must be an element.
-
Sessions of given channelId already registered.
-
Cannot unregister not registered sessions.
-
Missing container element.
-
Container element is not a HTMLElement.
-
The
config.simpleUpload.uploadUrl
configuration required by theSimpleUploadAdapter
is missing. Make sure the correct URL is specified for the image upload to work properly. -
Either
execute
orcommandName
has to be specified inSlashCommandDefinition
. -
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
Source editing feature is not fully compatible with real-time collaboration, and using it may lead to data loss. Please read source editing feature guide to learn more.
If you understand the possible risk of data loss, you can enable the source editing by setting the
allowCollaborationFeatures
configuration flag totrue
. -
The name "All" for a special category group cannot be used because it is a special category that displays all available special characters.
-
One of the special character groups in the "specialCharacters.order" configuration doesn't exist.
-
Graveyard position invalid.
-
Split operation specifies wrong number of nodes to move.
-
Split position is invalid.
-
Cannot split root element.
-
Style command can be executed only with a correct style name.
This warning may be caused by:
- passing a name that is not specified in the configuration (e.g. a CSS class name),
- when trying to apply a style that is not allowed on a given element.
-
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
This
TableSlot
's getter (property) was removed in CKEditor 5 v20.0.0.Check out the new
TableWalker
's API in the documentation. -
The
options.at
points at a row position that does not exist. -
The
options.at
param must point at existing row andoptions.rows
must not exceed the rows in the table. -
Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
Cannot download new token from the provided url.
-
A
tokenUrl
must be provided as the first constructor argument. -
The provided token must follow the JSON Web Tokens format.
-
You will see this warning when the CKEditor token could not be refreshed. This may be a result of a network error, a token endpoint (server) error, or an invalid token URL configuration.
If this warning repeats, please make sure that the configuration is correct and that the token endpoint is up and running. Learn more about token configuration.
Note: If the token's auto refresh option is enabled, attempts to refresh will be made until success or token's destruction.
Parameters
autoRefresh : any
Whether the token will keep auto refreshing.
-
There was a problem processing the configuration of the toolbar. The item with the given name does not exist so it was omitted when rendering the toolbar.
This warning usually shows up when the
Plugin
which is supposed to provide a toolbar item has not been loaded or there is a typo in the toolbar configuration.Make sure the plugin responsible for this toolbar item is loaded and the toolbar configuration is correct, e.g.
Bold
is loaded for the'bold'
toolbar item.You can use the following snippet to retrieve all available toolbar items:
Array.from( editor.ui.componentFactory.names() );
Parameters
item : any
The name of the component or nested toolbar definition.
-
The toolbar multiline breaks (
-
items) only work when the automatic button grouping is disabled in the toolbar configuration. To do this, set theshouldNotGroupWhenFull
option totrue
in the editor configuration:const config = { toolbar: { items: [ ... ], shouldNotGroupWhenFull: true } }
Learn more about toolbar configuration.
-
A dropdown definition in the toolbar configuration is missing a text label.
Without a label, the dropdown becomes inaccessible to users relying on assistive technologies. Make sure the
label
property is set in your drop-down configuration:{ label: 'A human-readable label', icon: '...', items: [ ... ] },
Learn more about toolbar configuration.
-
Suggestion to accept does not exist.
-
Cannot set an adapter more than once.
-
Adapter not set or is missing
getSuggestion()
method. -
Trying to enable command that does not exist.
-
Editor creator has to be a function.
-
Suggestion to discard does not exist.
-
Trying to enable the same command twice.
-
Suggestion marker data does not match loaded suggestion data.
-
Suggestion with given id not found.
-
User with given id not found.
-
An incorrect value was passed to the translation function. This was probably caused by an incorrect message interpolation of a plural form. Note that for messages supporting plural forms the second argument of the
t()
function should always be a number or an array with a number as the first element. -
You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.
Please contact our customer support to get full access at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached revisions number limit).
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
You have exhausted the trial usage limit (reason: reached time limit). Restart the editor.
Please contact our customer support to get a full access at https://ckeditor.com/contact/.
-
The child view of a dropdown is missing the
focus()
method and could not be focused when the dropdown got open.Making the content of a dropdown focusable in this case greatly improves the accessibility. Please make the view instance implements the focusable interface for the best user experience.
-
The child view of a dropdown could not be focused because it is missing the
focus()
method.This warning appears when a dropdown gets open and it attempts to focus the first child of its panel but the child does not implement the focusable interface.
Focusing the content of a dropdown on open greatly improves the accessibility. Please make sure the view instance provides the
focus()
method for the best user experience. -
The number of children in extended definition does not match.
-
Attempting to revert a template which has not been applied yet.
-
Node definition cannot have the "tag" and "text" properties at the same time. Node definition must have either "tag" or "text" when rendering a new Node.
-
The minimum number of rows is greater than the maximum number of rows.
Parameters
textareaView : any
The misconfigured textarea view instance.
minRows : any
The value of
minRows
property.maxRows : any
The value of
maxRows
property.
-
This View has already been rendered.
-
All event names must be strings.
-
An unexpected error occurred inside the CKEditor 5 codebase. This error will look like the original one to make the debugging easier.
This error is only useful when the editor is initialized using the
Watchdog
feature. In case of such error (or anyCKEditorError
error) the watchdog should restart the editor. -
Update bookmark command can be executed only with a valid name.
A valid bookmark name must be a non-empty string and must not contain any spaces.
-
Api address must be provided.
-
Token must be provided.
-
User with a given id is already added.
-
The id must be a string.
-
Cannot add a local user more than once.
-
Cannot specify a non-existing user as the local user.
-
Incorrect conversion result was dropped.
Model range should be a conversion result.
-
View#createPositionAt()
requires the offset to be specified when the first parameter is a view item. -
Cannot add children to
EmptyElement
. -
The node's parent does not contain this node. It means that the document tree is corrupted.
-
You can not make a position after a root.
-
You cannot make a position before a root.
-
Cannot add children to a
RawElement
instance. -
The inline filler node was lost. Most likely, something overwrote the filler text node in the DOM.
-
Unknown type passed to Renderer.markToSync.
-
Selection range set to an object that is not an instance of
Range
. -
Trying to add a range that intersects with another range from selection.
Parameters
addedRange : any
Range that was added to the selection.
intersectingRange : any
Range from selection that intersects with
addedRange
.
-
Cannot set selection focus if there are no ranges in selection.
-
Cannot set selection to given place.
-
selection.setTo requires the second parameter when the first parameter is a node.
-
Given length value is incorrect.
-
Given offsetInText value is incorrect.
-
Neither boundaries nor starting position have been defined.
-
Only
backward
andforward
direction allowed. -
Cannot add children to
UIElement
. -
Trying to break an element which is not a container element.
-
Trying to break root element.
-
Cannot break an
EmptyElement
instance.This error is thrown if
DowncastWriter#breakAttributes()
was executed in an incorrect position. -
Cannot break a
RawElement
instance.This error is thrown if
DowncastWriter#breakAttributes()
was executed in an incorrect position. -
Cannot break a
UIElement
instance.This error is thrown if
DowncastWriter#breakAttributes()
was executed in an incorrect position. -
One of the nodes to be inserted is of an invalid type.
Nodes to be inserted with
DowncastWriter#insert()
should be of the following types: -
The
createSlot()
method is only allowed inside theelementToStructure
downcast helper callback. -
Position's parent container cannot be found.
-
The container of the given range is invalid.
This may happen if range start and range end positions are not placed inside the same container element or a parent container for these positions cannot be found.
Methods like
DowncastWriter#remove()
,DowncastWriter#clean()
,DowncastWriter#wrap()
,DowncastWriter#unwrap()
need to be called on a range that has its start and end positions located in the same container element. Both positions can be nested within other elements (e.g. an attribute element) but the closest container ancestor must be the same. -
Element before and after given position cannot be merged.
-
The
attribute
passed toDowncastWriter#unwrap()
must be an instance ofAttributeElement
. -
The
attribute
passed toDowncastWriter#wrap()
must be an instance ofAttributeElement
. -
Class and style attributes should be handled separately in
ViewConsumable#add()
.What you have done is trying to use:
consumables.add( { attributes: [ 'class', 'style' ] } );
While each class and style should be registered separately:
consumables.add( { classes: 'some-class', styles: 'font-weight' } );
-
Cannot add a plugin that does not implement the
reconnect()
method to theWebSocketGateway
reconnection stack. -
The authentication
tokenUrl
*config.cloudServices.tokenUrl
} configuration is required for creating a websocket connection. -
The
config.cloudServices.webSocketUrl
configuration is required for creating a websocket connection in the real-time collaboration.ClassicEditor.create( document.createElement( 'div' ), { cloudServices: { webSocketUrl: "YOUR_WEBSOCKET_URL" // ... } // ... } );
-
A plugin was added twice to the
WebSocketGateway
reconnection stack. -
Cannot attach wide sidebar twice.
-
Cannot detach not attached sidebar.
-
The element passed to
toWidget()
must be aContainerElement
instance.Parameters
element : any
The view element passed to
toWidget()
.
-
Toolbar with the given id was already added.
Parameters
toolbarId : any
Toolbar id.
-
When registering a new widget toolbar, you need to provide a non-empty array with the items that will be inserted into the toolbar.
If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.
See for instance:
Parameters
toolbarId : any
The id of the toolbar that has not been configured correctly.
-
Marker with provided name already exists.
-
Range parameter is required when adding a new marker.
-
The
options.usingOperation
parameter is required when adding a new marker. -
Root with provided name already exists and is attached.
-
Root with provided name does not exist or is already detached.
-
Trying to use a writer outside a
change()
orenqueueChange()
blocks.The writer can only be used inside these blocks which ensures that the model can only be changed during such "sessions".
-
Node after merge position must be an element.
-
Node before merge position must be an element.
-
Range is going to be moved within not the same document. Please use insert instead.
-
Invalid range to move.
-
Range to move is not flat.
-
Trying to remove marker which does not exist.
-
Trying to rename an object which is not an instance of Element.
-
Element with no parent can not be split.
-
Limit element is not a position ancestor.
-
Trying to unwrap an element which has no parent.
-
Marker with provided name does not exist and will not be updated.
-
The usage of
writer.updateMarker()
only to reconvert (refresh) a model marker was deprecated and may not work in the future. Please update your code to useeditor.editing.reconvertMarker()
instead.Parameters
markerName : any
The name of the updated marker.
-
One of the options is required - provide range, usingOperations or affectsData.
-
Element to wrap with is already attached to a tree model.
-
Element to wrap with is not empty.
-
Range to wrap is not flat.
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.
With the release of version 42.0.0, we have rewritten much of our documentation to reflect the new import paths and features. We appreciate your feedback to help us ensure its accuracy and completeness.