错误代码
CKEditor 5 框架将错误和警告记录到控制台。以下列表包含这些问题的更详细描述。
-
无法在未知类别中添加按键。请使用
addKeystrokeInfoCategory
添加新类别或确保指定类别存在。参数
categoryId : any
未知按键类别的 ID。
keystrokes : any
即将添加的按键定义。
-
无法将按键添加到未知组。
请使用
addKeystrokeInfoGroup
添加新组或确保指定组存在。参数
groupId : any
未知按键组的 ID。
categoryId : any
未知组所属类别的 ID。
keystrokes : any
即将添加的按键定义。
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
AI 文本适配器插件尚未添加到编辑器中。请使用提供的适配器插件之一(例如,如果您连接到 OpenAI 或 Azure OpenAI 服务,则使用
OpenAITextAdapter
)或创建一个自定义适配器。 -
向 AI 服务 API 发送请求失败。
-
alignment.options
中的一个className
已被声明过。参数
option : any
第一个声明给定
className
的选项。configuredOptions : any
alignment.options
的内容。
-
至少有一个选项声明
className
后,所有选项都必须定义className
属性。参数
configuredOptions : any
alignment.options
的内容。
-
alignment.options
中的一个name
已被声明过。每个代表一个对齐选项的name
都只能设置一次。参数
option : any
第一个声明给定
name
的选项。configuredOptions : any
alignment.options
的内容。
-
alignment.options
中的一个name
未被识别。可用的选项包括:'left'
、'right'
、'center'
和'justify'
。参数
option : any
name
属性值未知的选项。
-
-
注释已存在于集合中。它不能添加多次。
-
注释不存在于集合中,无法删除。
-
注释应始终只属于一个注释 UI 实例。请检查传递给
activate
方法 的过滤器。 -
尚未注册具有给定名称的 UI。
-
尚未注册具有给定名称的 UI。
-
尚未注册具有给定名称的 UI。
-
已注册具有给定名称的 UI。
-
注释 UI 插件应实现
AnnotationsUI
接口。 -
传递给
attachToForm()
的编辑器必须实现ElementApi
接口。 -
无法为没有 ID 的属性元素获取具有相同 ID 的元素。
-
给定节点已存在具有给定键的属性。
-
要更改的范围不平坦。
-
已更改节点的属性值与操作的旧属性值不同。
-
Batch
构造函数的type
属性的字符串值已弃用,并将很快被删除。有关更多信息,请参阅Batch
构造函数 API 文档。 -
Batch#type
属性已弃用,并将很快被删除。请改用Batch#isLocal
、Batch#isUndoable
、Batch#isUndo
和Batch#isTyping
。 -
当试图在视图树处于错误状态时对其进行更改时抛出。这可能会导致一些意外的行为以及 DOM 和视图之间的不一致。这可能是由以下原因造成的:
- 在渲染过程中调用
change
或forceRender
, - 在 后置处理函数 内调用
change
或forceRender
。
- 在渲染过程中调用
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
用户无权访问
ckbox.defaultUploadWorkspaceId
配置中定义的工作区。 -
获取可用类别列表(上传的文件可以与这些类别关联)失败。
-
图像尚未处理。
-
图像处理失败。
-
-
CKBox 插件需要
config.ckbox.tokenUrl
或config.cloudServices.tokenUrl
配置。 -
当由于 CKEditor 5 的安装、导入或初始化方式错误导致某些模块被评估和执行两次时,就会抛出此错误。重复的模块会导致运行时错误并增加捆绑包大小。
检查依赖项版本
首先,确保您使用的是所有 CKEditor 5 依赖项的最新版本。根据安装方法,您应该检查
ckeditor5
、ckeditor5-premium-features
或@ckeditor/ckeditor5-<NAME>
包的版本。如果您无法更新到最新版本,请确保所有 CKEditor 5 包都处于相同的版本。如果您使用的是第三方插件,请确保也对其进行更新。如果它们与您使用的 CKEditor 5 版本不兼容,您可能需要降级 CKEditor 5 包(我们不建议这样做)。请插件作者升级依赖项,或分叉他们的项目并自己进行更新。
检查导入
下一步是查看您是如何将 CKEditor 5 导入到您的项目中的。
新的安装方法 旨在防止模块重复,因此,如果您还没有使用它们,请考虑更新您的项目。 但是,为了向后兼容,仍然支持几种旧的安装方法,混合使用它们可能会导致模块重复。
以下是 CKEditor 5 包最常见的导入方法。
- 新的安装方法(NIM) – 从
ckeditor5
和ckeditor5-premium-features
包中导入。 - 新的安装方法的优化构建 – 从
@ckeditor/ckeditor5-<NAME>/dist/index.js
中导入。 - 预定义构建(旧版) – 从
@ckeditor/ckeditor5-build-<NAME>
包中导入。 - 默认导入(旧版) – 从
@ckeditor/ckeditor5-<NAME>
包中导入(默认导出)。 src
(旧版) – 从@ckeditor/ckeditor5-<NAME>/src/*
中导入。- DLL 构建(旧版) – 从
ckeditor5/build/<NAME>
和@ckeditor/ckeditor5-<NAME>/build/*
中导入。
避免重复模块的最佳方法是避免混合使用这些安装方法。例如,如果您使用的是特定于优化构建的导入,则应将它们用于所有 CKEditor 5 包。此外,由于预定义构建和 DLL 构建已包含编辑器的核心,因此不能与其他类型的导入一起使用。
下面是一个矩阵,显示哪些安装方法彼此兼容。
NIM 优化构建 预定义构建 默认导入 src
DLL 构建 NIM ✅ ✅ ❌ ❌ ❌ ❌ 优化构建 ✅ ✅ ❌ ❌ ❌ ❌ 预定义构建 ❌ ❌ ✅ ❌ ❌ ❌ 默认导入 ❌ ❌ ❌ ✅ ✅ ❌ src
❌ ❌ ❌ ✅ ✅ ❌ DLL 构建 ❌ ❌ ❌ ❌ ❌ ✅ 如果您使用的是任何第三方插件,请确保您导入它们的方 法与您导入 CKEditor 5 的方法兼容。
新的安装方法和优化构建
如果您使用的是 新的安装方法,则您只能从
ckeditor5
和ckeditor5-premium-features
包中导入代码。不要从@ckeditor/ckeditor5-<NAME>
包中导入代码,除非您按照 优化构建大小 指南进行操作,并且从@ckeditor/ckeditor5-<NAME>
包中导入的代码以/dist/index.js
结尾。如果您使用的是 CDN,请确保您的项目中没有两次包含某些文件。
有效和无效导入路径的示例
(旧版) 预定义构建
如果您使用 预定义版本,则无法导入任何其他插件。这些版本已经包含编辑器的核心和选定的插件,导入额外的插件会导致某些模块被捆绑和加载两次。
有效和无效导入路径的示例
如果您缺少 插件列表 中的某些功能,您应该切换到 新的安装方法,该方法没有此限制。如果您无法迁移到新的安装方法,请尝试使用 超级构建。此构建包含所有编辑器功能。
(传统)默认导入和`src`导入
如果您使用 传统自定义安装 方法,您应该只从 `@ckeditor/ckeditor5-<NAME>` 包中导入代码。虽然您可以从 `@ckeditor/ckeditor5-<NAME>/src/*` 文件中导入代码,但建议不要这样做,因为它会使迁移到新的安装方法更加困难。
如果您使用此安装方法,您不应该从 `ckeditor5`、`ckeditor5-premium-features` 或 `@ckeditor/ckeditor5-build-<NAME>` 包中导入代码。
有效和无效导入路径的示例
重新安装`node_modules`
通常,npm 和其他包管理器会对所有包进行重复数据删除 - 例如,`ckeditor5` 只会在 `node_modules/` 中安装一次。但是,已知它偶尔会失败。
为了排除这种可能性,您可以尝试以下操作
- 删除`node_modules`目录。
- 删除`package-lock.json`、`yarn.lock` 或`pnpm-lock.yaml`文件(取决于使用的包管理器)。
- 运行`npm install`以重新安装所有包。
- 运行`npm ls`以检查像`@ckeditor/ckeditor5-core`这样的包安装了多少次。如果它们安装了不止一次,请验证哪个包导致了这种情况。
- 新的安装方法(NIM) – 从
-
CKFinder 至少需要一个插件来支持在编辑器中加载的图像。请确保以下任一项
Image
(加载两种类型的图像),- 或
ImageBlock
, - 或
ImageInline
。
已加载到您的编辑器配置中。
-
`ckfinder.openerMethod`必须是以下之一:“popup”或“modal”。
-
内部`WebSocketGateway`错误。
此错误可能是由于
webSocketUrl
* `config.cloudServices.webSocketUrl`} 配置错误,或者由于处理 WebSocket 连接的服务不可用。原始错误传递在`error.data.originalError`属性中。
-
内部重新连接错误。
-
提供的`tokenUrl`没有注册到
registerTokenUrl
。 -
无法连接到同一个 channelId 多次。
-
缺少具有给定`channelId`的服务。
-
缺少给定 channelId 的服务。
-
需要唯一的`collaboration.channelId`配置来定义数据存储的名称。请注意,具有相同 channelId 的应用程序实例将共享彼此的数据。
-
此项目的 ID 应该是一个字符串。
-
此项目已存在于集合中。
-
传递给
Collection#addMany()
的`index`无效。它必须是 0 到集合长度之间的数字。 -
集合不能绑定多次。
-
必须给出索引或 ID。
-
未找到项目。
-
命令不存在。
参数
commandName : any
命令的名称。
-
无法将一个不存在的评论线程设置为活动状态。请检查给定 id 的评论线程是否已添加到存储库中。
-
无法将未附加的评论线程设置为活动状态。评论线程必须附加到目标元素才能将其设置为活动状态。
-
无法设置适配器多次。
-
添加评论时出现错误。
-
添加评论线程时出现错误。
-
无法将评论添加到不存在的评论线程中。
-
评论作者未在 Users 插件中定义。
-
无法附加不存在的评论线程。
-
具有给定 id 的评论线程已添加到存储库中。
-
获取评论线程失败。
-
评论 ID 必须是字符串。
-
评论作者 ID 必须是字符串。
-
评论内容必须是字符串。
-
评论线程 ID 必须是字符串。
-
评论 ID 必须是字符串。
-
具有给定 id 的评论线程不存在。
-
需要目标才能打开新的评论线程。
-
具有给定 id 的评论线程未添加到编辑器中,也没有定义 adapter.getCommentThread()。请参阅 https://ckeditor.npmjs.net.cn/docs/ckeditor5/latest/features/collaboration/comments/comments-integration.html。
-
删除评论时出现错误。
-
无法从不存在的评论线程中删除评论。
-
删除评论时出现错误。
-
无法删除不存在的评论。
-
无法删除不存在的评论线程。
-
具有给定 id 的评论线程未解决。
-
重新打开评论线程时出现错误。
-
解决评论线程时出现错误。
-
具有给定 id 的评论线程已解决。
-
更新评论时出现错误。
-
评论内容必须是字符串。
-
无法更新不存在的评论线程的评论。
-
更新评论线程时出现错误。
-
无法更新不存在的评论。
-
-
无法将多个编辑器添加到由编辑器创建的上下文。
-
仅允许构造函数作为 上下文插件。
-
仅允许标记为 上下文插件 的插件与上下文一起使用。
-
尝试添加同一个视图的配置多次。
-
尝试删除堆栈中未定义的视图的配置。
-
尝试显示不存在的堆栈。
-
尝试为未注册的调度器注册别名。
-
此错误发生在 模型元素 通过
elementToStructure
帮助程序向下转换,但该元素被允许托管 `$text`,由 模型模式 决定。例如,这可能是由于 `myElement` 在其模式定义中允许
$block
的内容在这种情况下,可以使用
elementToElement()
帮助程序来解决这个问题参数
elementName : any
要为其创建结构的元素的名称。
-
尝试将转换器添加到未知的调度器组。
-
尝试注册一个已经注册的组名。
-
提供给
writer.createSlot()
的过滤器不完整,并且至少排除了一个子元素(其中一个子元素不会被分配到任何插槽)。参数
element : any
其子元素无法被正确分配到多个插槽的元素。
-
提供给
writer.createSlot()
的过滤器重叠(至少有两个过滤器接受相同的子元素)。参数
element : any
其子元素无法被正确分配到多个插槽的元素。
-
在向下转换转换器中,提供给
writer.createSlot()
的插槽模式未知。 -
数据过滤器无法处理该定义。
请确保注册的定义正确。
-
检索分离根的文档数据。
这通常表示错误,因为分离根应被视为“已删除”,并且不应包含在文档数据中。
-
无法从不存在的根获取数据。当
DataController#get() 方法
使用不存在的根名称调用时,会抛出此错误。例如,如果编辑器实例只有一个main
根,调用get
,例如将抛出此错误。
-
无法在不存在的根上初始化数据。当DataController#init() 方法使用不存在的根名称调用时,会抛出此错误。例如,如果编辑器实例只有一个
main
根,调用init
,例如将抛出此错误。
-
无法在不存在的根上设置数据。当DataController#set() 方法使用不存在的根名称调用时,会抛出此错误。例如,如果编辑器实例只有一个默认的
main
根,调用set
,例如将抛出此错误。
-
无法分离文档节点。
-
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
无法为未知 UID 恢复重力。请确保您使用从
overrideSelectionGravity
获得的正确 UID 来恢复。参数
uid : any
由
_overrideGravity
返回的唯一标识符。
-
来自文档选择的范围在不正确的位置开始或结束。
-
在渲染过程中忽略了无效的属性名称。
-
dataPipeline:transparentRendering
标志仅在数据管道中受支持。 -
DomConverter
在编辑管道中检测到一个交互式属性。为了获得最佳的编辑体验,该属性被重命名为data-ck-unsafe-attribute-[原始属性名称]
。如果您是生成此属性的插件的作者,并且希望它在编辑管道中保留,您可以在模型-视图转换期间使用
DowncastWriter
创建元素时配置此设置。诸如createContainerElement
、createAttributeElement
或createEmptyElement
的方法接受一个选项,该选项将禁用特定属性的过滤参数
domElement : any
设置属性的 DOM 元素。
key : any
属性的原始名称
value : any
原始属性的值
-
在渲染编辑器内容时,
DomConverter
检测到一个<script>
元素,该元素可能会破坏编辑体验。为了避免这种情况,<script>
元素被替换为<span data-ck-unsafe-element="script"></span>
。 -
在渲染编辑器内容时,
DomConverter
检测到一个<style>
元素,该元素可能会影响编辑体验。为了避免这种情况,<style>
元素被替换为<span data-ck-unsafe-element="style"></span>
。 -
Easy Image 功能需要加载以下插件之一才能正常工作
ImageBlock
,ImageInline
,Image
(加载ImageBlock
和ImageInline
)
请确保您的编辑器配置正确。
-
提供的名称的标记不存在,无法重新转换。
参数
markerName : any
重新转换标记的名称。
-
CKEditor 43.1.0 版本中删除了配置属性
config.sanitizeHtml
,并且不再支持。请改用
config.htmlEmbed.sanitizeHtml
和/或config.mergeFields.sanitizeHtml
。 -
config.initialData
选项不能与作为Editor.create()
的第一个参数传递的初始数据一起使用。 -
编辑器初始数据和初始根属性被最新的修订数据替换,因为编辑器数据与修订数据不同。
这意味着编辑器数据已过时(可能是由于错误,例如在上次编辑会话期间,文档数据未在最后更改后保存)或数据在从编辑器获取后被后处理。
请注意,空格中的更改也被视为差异。
-
从
34.0.0
版本开始,Editor#isReadOnly属性是只读的,只能使用Editor#enableReadOnlyMode( lockId )
和Editor#disableReadOnlyMode( lockId )
进行设置。34.0.0
版本之前的用法34.0.0
版本之后的用法 -
无法更新分离编辑器的源元素。
如果您没有将元素传递给
Editor.create()
,则无法调用updateSourceElement()
方法。 -
锁 ID 丢失或不是字符串或符号。
-
用于创建编辑器的 DOM 元素(例如,
InlineEditor.create()
)已被用于创建另一个编辑器实例。请确保每个编辑器都使用唯一的 DOM 元素创建。参数
element : any
导致冲突的 DOM 元素。
-
EditorUI#_editableElements
属性已弃用,并将很快被移除。请改用setEditableElement()
和getEditableElement()
方法。参数
editorUI : any
弃用属性所属的编辑器 UI 实例。
-
EditorConfig#toolbar.viewportTopOffset
属性已弃用,并将很快被移除。请改用EditorConfig#ui.viewportOffset
。 -
当尝试将
<textarea>
元素传递给编辑器类的create()
函数时,会抛出此错误。唯一可以在
<textarea>
元素上初始化的编辑器类型是经典编辑器。此编辑器会隐藏传递的元素,并在其旁边插入自己的 UI。其他类型的编辑器会将传递的元素用作其根可编辑元素,因此<textarea>
不适合它们。请改用<div>
或其他文本容器。 -
需要函数。
-
enablePlaceholder()
函数中的“text”选项已弃用,并将很快被移除。有关如何应用此更改的更多信息,请参阅迁移到 v39指南。
-
在将建议数据保存到数据库时发生了意外错误。为了避免文档数据与建议数据库之间不匹配,文档中的建议已自动丢弃。
-
您正在
exportWord.converterOptions
中使用 v1 API 接口。请使用新版导出 Word API 更新您的配置。查看迁移指南:https://docx-converter.cke-cs.com/v2/convert/docs#section/Export-to-Word/Migrating-from-v1 -
您需要启用上传适配器才能上传文件。
当
FileRepository
在没有 定义上传适配器 的情况下使用时,会出现此警告。如果您在使用其中一个 CKEditor 5 构建 时看到此警告,则表示您没有配置这些构建中默认提供的任何上传适配器。
预定义构建是一个已弃用的解决方案,我们强烈建议您 迁移到新的安装方法。
查看 全面的“图像上传概述”,了解构建中有哪些上传适配器以及如何配置它们。
否则,如果您看到此警告,则您可能启用了像
ImageUpload
或ImageUploadUI
这样的功能,但您没有启用任何上传适配器。您可以从 “图像上传概述” 中列出的现有上传适配器中选择一个。您也可以实现自己的 图像上传适配器。
-
如果状态与空闲状态不同,则无法调用读取。
-
如果状态与空闲状态不同,则无法调用上传。
-
解码 Base64 图像数据时出现问题。
-
必须将 Api 地址作为第三个参数提供。
-
必须将文件作为第一个参数提供。
-
必须将令牌作为第二个参数提供。
-
上传文件失败。
-
此元素已被
FocusTracker
跟踪。 -
添加到
FocusTracker
的View
没有element
。请确保在将视图添加到焦点跟踪器之前render
视图。 -
如果
config.fontSize.supportAllValues
为true
,则您需要使用数值作为字体大小选项。查看 插件配置 中描述的有效示例。
参数
presets : any
无效值。
-
当使用 HTML 嵌入功能并将
config.htmlEmbed.showPreviews
设置为true
时,强烈建议您定义一个清理函数来清理输入的 HTML,以避免 XSS 漏洞。有关详细信息,请查看 HTML 嵌入功能 文档。
-
必须启用
ImageBlock
插件才能允许插入块图像。查看type
以了解更多信息。 -
必须启用
ImageInline
插件才能允许插入内联图像。查看type
以了解更多信息。 -
有两个插入图像集成以相同名称注册。
请确保您没有加载多个资产管理器插件。
-
插入图像功能需要通过单独的功能注册集成。
insertImage
工具栏按钮需要通过其他功能注册集成。例如 ImageUpload、ImageInsert、ImageInsertViaUrl、CKBox -
插入图像功能需要在编辑器配置中提供集成列表。
集成的默认列表是
upload
、assetManager
、url
。如果加载了给定的功能插件,则这些集成将包含在插入图像下拉菜单中。您应该省略integrations
配置键以使用默认集,或者提供应使用的选定集成列表。 -
指定的插入图像集成名称未知,或者提供插件未加载到编辑器中。
-
配置中提供的图像样式定义无效。
请确保该定义正确地实现了以下定义之一
参数
dropdown : any
无效下拉菜单的名称
style : any
无效图像样式选项的名称
-
为了正常工作,每个图像样式 选项 都需要编辑器支持特定模型元素(也称为图像类型)。
可以在样式选项定义的
modelElements
属性中定义可以将图像样式选项应用到的模型元素名称。查看控制台中的警告,以准确了解不支持哪些选项以及缺少哪些编辑器插件。确保在编辑器中加载这些插件,以使此图像样式选项正常工作。
参数
option : any
不支持的选项的名称。
missingPlugins : any
必须加载其中一个插件的名称,以支持特定选项。
-
当为独立按钮配置
config.image.resizeOptions
时,必须为每个选项设置有效的icon
令牌。查看 插件配置 中描述的所有有效选项。
参数
option : any
无效的图像调整大小选项。
-
导入 Word 文件时出错。查看开发人员工具中浏览器网络选项卡中的云服务响应,以了解原因。
-
导入过程已取消。Word 文件内容应插入的位置不再存在,因为文档结构已更改。再次选择位置,然后尝试再次导入 Word 文件。
-
无法两次附加同一个批注。
-
无法分离未附加的 UI。
-
InlineAnnotations
插件不允许作为Context
插件使用。它只能用作编辑器插件。 -
插入位置无效。
-
在将插入的内容与其同级元素合并时发生内部错误。插入位置应等于合并位置。
如果您遇到此错误,请向 CKEditor 5 团队报告此错误,并提供尽可能多的有关插入内容和插入位置的详细信息。
-
给定的节点无法插入到给定位置。
参数
node : any
要插入的节点。
position : any
在其中插入节点的位置。
-
尝试使用 insertObject() 函数插入一个元素,该元素未在模式中定义为对象。查看
SchemaItemDefinition
。如果您要插入不是对象的內容,则可能需要使用 insertContent() 函数。 -
不支持的
options.setSelection
参数传递给 insertObject() 函数。查看 insertObject() API 文档以了解允许的options.setSelection
参数值。 -
日期格式必须是函数。
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
未知按键名称。只能使用
keyCodes
中包含的按键名称。 -
List
功能无法与LegacyList
插件一起加载。参数
conflictPlugin : any
插件名称。
-
Locale#language
属性已弃用,将在不久的将来删除。请改用Locale#uiLanguage
和Locale#contentLanguage
属性。 -
模型位置无法映射到视图,因为模型位置的父级没有映射的视图元素(可能尚未转换或没有转换器)。
请确保模型元素已正确转换为视图。
-
无法使用 已销毁的标记 实例。
-
标记名称不能包含“,”字符。
-
具有给定名称的标记不存在。
-
attributes
选项的键值匹配器模式使用已弃用的class
键。改用
classes
匹配器模式选项请参考 迁移到 v29.1.0 指南和
MatcherPattern
文档。参数
pattern : any
缺少属性的模式。
-
attributes
选项的键值匹配器模式使用已弃用的style
键。改用
styles
匹配器模式选项请参考 迁移到 v29.1.0 指南和
MatcherPattern
文档。参数
pattern : any
缺少属性的模式。
-
-
媒体嵌入配置中指定的提供商(或额外提供商)之一没有名称,编辑器不会使用它。要使此媒体提供商正常工作,请仔细检查编辑器配置。
-
用于获取提及自动完成馈送的回调抛出错误,并且提及 UI 隐藏或根本没有显示。
-
-
-
-
无法将不受支持的组件添加到
MenuBarView
。组件应为
MenuBarMenuView
(子菜单)或MenuBarMenuListItemButtonView
(按钮)。参数
componentName:任何
配置中使用的不受支持组件的名称。
componentView:任何
不受支持的组件视图。
-
未找到请求的数据集。
-
数据集 ID 必须是唯一的。
-
合并字段组 ID 必须是唯一的。
-
合并字段 ID 必须是唯一的。
-
合并字段 ID 只能包含字母数字字符、点、下划线和连字符。
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
合并字段前缀和后缀只能包含以下字符:
'"`!#%:;=@{}~$()*+/?[\]^|
。 -
尝试设置的预览模式不可用。有关更多信息,请参阅 预览模式配置。
-
无效的预览模式定义。它应该是一个非空的数组,其中包含以下一个或多个值:'$labels'、'$defaultValues' 和 '$dataSets'。
-
合并字段前缀和后缀必须不同。
-
合并字段前缀和后缀不能超过 8 个字符。
-
当将合并字段功能与
config.mergeFields.previewHtmlValues
设置为true
一起使用时,强烈建议定义一个清理函数来清理输入 HTML,以避免 XSS 漏洞。有关详细概述,请查看 合并字段功能 文档。
-
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
合并操作指定了错误的节点移动数量。
-
合并源位置无效。要合并的元素必须具有父节点。
-
合并目标位置无效。要合并的元素必须具有父节点。
-
Model#createPositionAt()
要求在第一个参数为模型项时指定偏移量。 -
具有指定名称的根已经存在。
-
只有具有匹配版本的运算才能添加到历史记录中。
参数
errorData:任何
操作和当前文档历史记录版本。
-
LivePosition 的根必须是 RootElement 的实例。
-
在节点列表中找不到给定的索引。
-
尝试插入不是 Node 实例的对象。
-
在节点列表中找不到给定的偏移量。
参数
nodeList:任何
节点列表的字符串化。
-
您不能在根元素之后创建位置。
-
您不能在根元素之前创建位置。
-
无法为文档创建位置。具有指定名称的根不存在。
-
位置父级必须是模型元素或模型文档片段。
-
位置路径必须是一个至少包含一个项目的数组。
-
位置根无效。
位置只能锚定在元素或文档片段中。
-
尝试添加与选择中的另一个范围相交的范围。
参数
addedRange:任何
添加到选择的范围。
intersectingRange:任何
选择中与
addedRange
相交的范围。
-
如果选择中没有范围,则无法设置选择焦点。
-
当第一个参数是节点时,selection.setTo 需要第二个参数。
-
给定的
length
值不正确。 -
给定的
offsetInText
值不正确。 -
TreeWalker
的边界或起始位置均未定义。 -
只允许
backward
和forward
方向。 -
无法将节点从一个文档移动到不同的树。禁止将已经位于文档中的节点移出文档。
-
尝试将一组节点移动到该组中的一个节点中。
-
要移动的节点不存在。
-
尝试将一组节点移动到该组的中间。
-
您无法禁用
$graveyard
根。 -
要加载的根之前已经加载过。
loadRoot()
调用没有效果。 -
要加载的根不存在。
-
尝试在不存在的根上设置属性。
rootsAttributes
中指定的根与初始编辑器根不匹配。 -
编辑器根与
initialData
配置 不匹配。这可能发生在以下两种情况之一
- 配置错误。
MultiRootEditor.create()
中的sourceElementsOrData
参数包含与initialData
配置 不同的根。 - 在初始化编辑器时,
initialData
配置值或编辑器根的状态发生了更改。
- 配置错误。
-
无法将狭窄侧边栏附加两次。
-
无法分离未附加的侧边栏。
-
属性必须是唯一的。
-
不能多次绑定同一个属性。
-
不能在一次绑定中绑定多个属性并使用回调函数。
-
将一个属性绑定到多个可观察对象只能使用一个属性。
-
绑定多个可观察对象只能使用回调函数。
-
to()
中的语法无效。 -
属性数量必须匹配。
-
所有属性必须是字符串。
-
无法覆盖现有属性。
当尝试使用 set 方法设置一个与已有属性同名的属性时,就会抛出此错误。例如
-
属性必须是字符串。
-
无法装饰未定义的方法。
参数
object : any
要装饰其方法的对象。
methodName : any
不存在的方法名。
-
尝试移动一个开始和结束位置位于不同元素的范围。
-
尝试删除一个开始和结束位置位于不同元素的范围。
-
-
无效的许可证密钥。请联系我们的客户支持,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
消息必须是字符串。
-
尝试为不存在的
channelId
设置权限。 -
DocumentList
插件已过时。请使用List
代替。 -
DocumentListProperties
插件已过时。请使用ListProperties
代替。 -
TodoDocumentList
插件已过时。请使用TodoList
代替。 -
如果一个插件是上下文插件,它所依赖的所有插件也应该改为上下文插件而不是普通插件。换句话说,如果一个插件可以在上下文中使用,它所有依赖的插件也应该能够在上下文中使用。请注意,上下文只提供编辑器 API 的一部分。如果一个插件需要完整的编辑器 API,那么所有依赖它的插件都应该被视为需要完整编辑器 API 的插件。
参数
plugin : any
所需插件的名称。
requiredBy : any
父插件的名称。
-
用于替换现有插件的插件不能依赖其他插件。
-
被替换的插件在 可用插件 集合中不存在。
-
被替换的插件不会被加载,因此不能被替换。
-
加载了两个具有相同
pluginName
的插件。这会导致这些插件之间在运行时发生冲突。实际上,此警告通常意味着向现有 CKEditor 5 构建中添加了新插件。插件应该始终添加到编辑器的源版本(
@ckeditor/ckeditor5-editor-*
)中,而不是添加到从@ckeditor/ckeditor5-build-*
包之一导入的编辑器中。检查导入路径以及传递给
Editor.create()
的插件列表或在Editor.builtinPlugins
中指定的插件列表。预定义构建是一个已弃用的解决方案,我们强烈建议您 迁移到新的安装方法。
第二种可能是你的
node_modules/
目录包含了同一个 CKEditor 5 包的重复版本。通常情况下,在干净安装时,npm 会在node_modules/
中对包进行去重,因此调用rm -rf node_modules && npm i
就足够了。但是,如果你安装了某些包的冲突版本,它们的依赖项可能需要安装多个版本,这会导致此警告。从技术上讲,此错误发生是因为在向现有编辑器构建中添加插件后,该插件的依赖项会被重复。它们已经被构建到该编辑器构建中,现在作为你正在安装的插件的依赖项被添加了第二次。
参数
pluginName : any
重复的插件名称。
plugin1 : any
第一个插件构造函数。
plugin2 : any
第二个插件构造函数。
-
插件不可用,无法加载。
插件类(构造函数)需要在被按名称加载之前提供给编辑器。这通常在 CKEditor 5 构建中通过设置
builtinPlugins
属性来完成。**如果你在使用 CKEditor 5 构建之一时看到此警告,则意味着你尝试启用该构建中未包含的插件。这可能是由于插件名称拼写错误,或者仅仅是因为该插件不是此构建的一部分。**
预定义构建是一个已弃用的解决方案,我们强烈建议您 迁移到新的安装方法。
**如果你在直接使用编辑器创建者之一时看到此警告(不是构建),则意味着你尝试按名称加载插件。但是,与 CKEditor 4 不同,CKEditor 5 没有实现“插件加载器”。这意味着 CKEditor 5 不知道从哪里加载插件模块。因此,你需要通过引用(作为构造函数)提供每个插件。在 快速入门 指南中查看示例。**
参数
plugin : any
无法加载的插件的名称。
-
插件未加载,无法获取。
插件类(构造函数)需要提供给编辑器,并且必须在从插件集合中获取之前加载。
注意:你可以使用
editor.plugins.has()
来检查插件是否已加载。参数
plugin : any
未加载的插件的名称。
-
用于替换现有插件的插件必须是函数。
-
用于替换现有插件的插件必须具有名称。
-
被替换的插件不能依赖其他插件。
-
无法加载插件,因为它的一个依赖项在
removePlugins
选项中列出。参数
plugin : any
所需插件的名称。
requiredBy : any
父插件的名称。
-
在插件列表中未找到所需的“软”依赖项。
在配置编辑器时,无论是在构建之前(通过
Editor.builtinPlugins
)还是在创建编辑器的实例时(例如,通过config.plugins
),都需要提供你所使用的其他插件的一些依赖项。当其中一个依赖项未提供时,就会抛出此错误。可以在
missingPlugin
中找到丢失的插件的名称,可以在requiredBy
中找到需要它的插件。为了解决它,你需要导入丢失的插件并将它添加到当前插件列表中(
Editor.builtinPlugins
或config.plugins
/config.extraPlugins
)。软依赖项是在 26.0.0 版本中引入的。如果你在升级到 26.0.0 版本时遇到此错误,请参阅 迁移到 26.0.0 指南。
参数
missingPlugin : any
所需插件的名称。
requiredBy : any
需要另一个插件的插件的名称。
-
config.presenceList.collapseAt
配置值必须是一个大于 0 的数字。 -
缺少存在列表的容器元素。请确保
config.presenceList.container
已设置并引用了现有 DOM 元素。 -
必须将至少一个范围传递给
Range._createFromRanges()
。 -
尝试在实时协作中使用
editor.setData()
或editor.data.set()
。在实时协作中重置数据通常意味着错误(不正确的集成或插件)。使用它可能会覆盖远程客户端上的本地(尚未同步)更改。如果你尝试设置编辑器的初始数据,请改用initialData
配置选项。如果你尝试在插件中设置编辑器数据,请考虑通过Writer
在model.change()
块中应用更改。如果你了解在实时协作中使用editor.data.set()
的影响,并且想要抑制此错误,请在editor.data.set()
调用中的第二个参数中将suppressErrorInCollaboration
标志设置为true
:editor.data.set( '<p>Your data</p>', { suppressErrorInCollaboration: true } )
。 -
服务器响应错误。
-
尝试将初始数据设置为已初始化的文档。
-
尝试在不存在的根节点上初始化数据。
-
连接到会话导致错误。
-
CollaborativeEditingService
内部错误。 -
要更改的元素的名称与操作的旧名称不同。
-
给定的位置无效,或者它之后的节点不是 Element 的实例。
-
缺少修订历史插件的配置。
请参阅 文档 了解如何设置插件。
-
给定节点已存在具有给定键的属性。
-
无法为文档创建 RootAttributeOperation。具有指定名称的根节点不存在。
-
要更改的元素不是根元素。
-
要删除的属性在给定节点中不存在。
-
-
同一个项目不能在模式中注册两次。
这种情况可能发生在
- 两个或多个插件使用相同的名称调用了
register()
。这通常意味着插件之间发生冲突,这些插件试图在模型中使用同一个元素。不幸的是,解决此问题的唯一方法是修改其中一个插件,使其使用唯一的模型元素名称。 - 同一个插件被加载了两次。这发生在它被 npm/yarn 安装了两个版本时,通常意味着以下问题之一
- 版本不匹配(你的两个依赖项需要此插件的两个不同版本),
- 导入不正确(此插件以某种方式被导入了两次,这使 webpack 混乱),
node_modules/
中的混乱(rm -rf node_modules/
可能会有帮助)。
注意:查看记录的
itemName
以更好地理解哪个插件被复制/冲突。参数
itemName:任何
正在注册两次的模型元素的名称。
- 两个或多个插件使用相同的名称调用了
-
合并位置之后的节点必须是元素。
-
合并位置之前的节点必须是元素。
-
已注册给定 channelId 的会话。
-
无法注销未注册的会话。
-
缺少容器元素。
-
容器元素不是 HTMLElement。
-
config.simpleUpload.uploadUrl
是SimpleUploadAdapter
所需的配置,但它缺失了。请确保为图像上传指定了正确的 URL,以确保图像上传正常工作。 -
在
SlashCommandDefinition
中必须指定execute
或commandName
。 -
源代码编辑功能与实时协作不完全兼容,使用它可能会导致数据丢失。请阅读 源代码编辑功能指南 了解详情。
如果您了解数据丢失的潜在风险,可以通过将
allowCollaborationFeatures
配置标志设置为true
来启用源代码编辑功能。 -
特殊类别组的名称“所有”不能使用,因为它是一个显示所有可用特殊字符的特殊类别。
-
"specialCharacters.order" 配置中存在一个不存在的特殊字符组。
-
墓地位置无效。
-
拆分操作指定了错误的节点移动数量。
-
拆分位置无效。
-
无法拆分根元素。
-
-
此
TableSlot
的 getter(属性)已在 CKEditor 5 v20.0.0 中删除。查看文档中新的
TableWalker
API。 -
options.at
指向不存在的行位置。 -
options.at
参数必须指向现有行,options.rows
必须不超过表中的行数。 -
无法从提供的 URL 下载新令牌。
-
必须在第一个构造函数参数中提供
tokenUrl
。 -
提供的令牌必须遵循 JSON Web 令牌 格式。
-
工具栏多行换行(
-
项目)仅在工具栏配置中禁用自动按钮分组时才有效。为此,请在编辑器配置中将shouldNotGroupWhenFull
选项设置为true
详细了解 工具栏配置。
-
-
要接受的建议不存在。
-
无法多次设置适配器。
-
适配器未设置或缺少
getSuggestion()
方法。 -
尝试启用不存在的命令。
-
编辑器创建者必须是一个函数。
-
要丢弃的建议不存在。
-
尝试两次启用相同的命令。
-
建议标记数据与加载的建议数据不匹配。
-
找不到具有给定 ID 的建议。
-
找不到具有给定 ID 的用户。
-
向翻译函数传递了不正确的 value。这可能是由于复数形式的错误消息插值导致的。请注意,对于支持复数形式的消息,
t()
函数的第二个参数应始终为数字或以数字为第一个元素的数组。 -
您已超出试用使用限制(原因:达到文档更改限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已用完试用使用限制(原因:达到修订次数限制)。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
您已用完试用使用限制(原因:达到时间限制)。重新启动编辑器。
请联系我们的客户支持以获取完全访问权限,网址为:https://ckeditor.npmjs.net.cn/contact/。
-
扩展定义中的子项数量不匹配。
-
尝试还原尚未应用的模板。
-
节点定义不能同时具有“tag”和“text”属性。在渲染新节点时,节点定义必须具有“tag”或“text”。
-
最小行数大于最大行数。
参数
textareaView : any
配置错误的 textarea 视图实例。
minRows : any
minRows
属性的值。maxRows : any
maxRows
属性的值。
-
此视图已渲染。
-
所有事件名称必须为字符串。
-
在 CKEditor 5 代码库中发生了意外错误。此错误将类似于原始错误,以便于调试。
此错误仅在使用
Watchdog
功能初始化编辑器时才有用。如果发生此错误(或任何CKEditorError
错误),监视器应该重新启动编辑器。 -
必须提供 API 地址。
-
必须提供令牌。
-
已添加具有给定 ID 的用户。
-
ID 必须为字符串。
-
无法多次添加本地用户。
-
无法将不存在的用户指定为本地用户。
-
不正确的转换结果被丢弃。
模型范围 应为转换结果。
-
当第一个参数为视图项时,
View#createPositionAt()
要求指定偏移量。 -
无法向
EmptyElement
添加子项。 -
节点的父项不包含此节点。这意味着文档树已损坏。
-
您不能在根之后创建位置。
-
您不能在根之前创建位置。
-
无法向
RawElement
实例添加子项。 -
内联填充节点丢失。最有可能的是,某些东西覆盖了 DOM 中的填充文本节点。
-
将未知类型传递给 Renderer.markToSync。
-
选择范围设置为不是
Range
实例的对象。 -
尝试添加与选择中另一个范围相交的范围。
参数
addedRange:任何
添加到选择的范围。
intersectingRange:任何
与
addedRange
相交的选择范围。
-
如果选择中没有范围,则无法设置选择焦点。
-
无法将选择设置为指定位置。
-
当第一个参数是节点时,selection.setTo 需要第二个参数。
-
给定的长度值不正确。
-
给定的offsetInText值不正确。
-
边界和起始位置都未定义。
-
只允许
backward
和forward
方向。 -
无法向
UIElement
添加子节点。 -
试图打断一个非容器元素。
-
试图打断根元素。
-
无法打断
EmptyElement
实例。如果
DowncastWriter#breakAttributes()
在不正确的位置执行,就会抛出此错误。 -
无法打断
RawElement
实例。如果
DowncastWriter#breakAttributes()
在不正确的位置执行,就会抛出此错误。 -
无法打断
UIElement
实例。如果
DowncastWriter#breakAttributes()
在不正确的位置执行,就会抛出此错误。 -
要插入的节点之一类型无效。
使用
DowncastWriter#insert()
插入的节点应该属于以下类型 -
createSlot()
方法只能在elementToStructure
下行转换帮助回调中使用。 -
找不到位置的父容器。
-
给定范围的容器无效。
如果范围开始和范围结束位置未放置在同一个容器元素内或找不到这些位置的父容器,则可能会发生这种情况。
像
DowncastWriter#remove()
、DowncastWriter#clean()
、DowncastWriter#wrap()
、DowncastWriter#unwrap()
这样的方法需要在范围上调用,该范围的起始和结束位置位于同一个容器元素中。两个位置都可以在其他元素(例如属性元素)内嵌套,但最近的容器祖先必须相同。 -
给定位置之前和之后的元素无法合并。
-
传递给
DowncastWriter#unwrap()
的attribute
必须是AttributeElement
的实例。 -
传递给
DowncastWriter#wrap()
的attribute
必须是AttributeElement
的实例。 -
-
无法将不实现
reconnect()
方法的插件添加到WebSocketGateway
重连堆栈中。 -
创建 websocket 连接需要身份验证
tokenUrl
*config.cloudServices.tokenUrl
} 配置。 -
实时协作需要
config.cloudServices.webSocketUrl
配置来创建 websocket 连接。 -
插件被两次添加到
WebSocketGateway
重连堆栈中。 -
无法两次附加宽侧边栏。
-
无法分离未附加的侧边栏。
-
-
具有给定 ID 的工具栏已添加。
参数
toolbarId : any
工具栏 ID。
-
当注册新的部件工具栏时,需要提供一个非空的数组,其中包含要插入工具栏的项目。
如果在集成编辑器时看到此错误,可能是忘记配置其中一个部件工具栏。
例如,请参见
参数
toolbarId : any
未正确配置的工具栏的 ID。
-
具有提供名称的标记已存在。
-
添加新标记时需要范围参数。
-
添加新标记时需要
options.usingOperation
参数。 -
具有提供名称的根已存在且已附加。
-
具有提供名称的根不存在或已分离。
-
试图在
change()
或enqueueChange()
块之外使用写入器。写入器只能在这些块内使用,这确保了模型只能在这样的“会话”期间更改。
-
合并位置后的节点必须是元素。
-
合并位置前的节点必须是元素。
-
范围将在非同一个文档内移动。请改用插入。
-
要移动的范围无效。
-
要移动的范围不平坦。
-
试图删除不存在的标记。
-
试图重命名一个不是 Element 实例的对象。
-
没有父元素的元素无法拆分。
-
限制元素不是位置祖先。
-
试图解开没有父元素的元素。
-
具有提供名称的标记不存在,将不会更新。
-
仅使用
writer.updateMarker()
来重新转换(刷新)模型标记已弃用,将来可能无法正常工作。请更新您的代码以改用editor.editing.reconvertMarker()
。参数
markerName : any
更新的标记的名称。
-
需要一个选项 - 提供范围、usingOperations 或 affectsData。
-
要包裹的元素已附加到树模型。
-
要包裹的元素不为空。
-
要包裹的范围不平坦。
我们每天都在努力使我们的文档完整。您是否发现过时的信息? 是否缺少某些内容? 请通过我们的问题跟踪器报告。
随着 42.0.0 版本的发布,我们重写了大部分文档以反映新的导入路径和功能。我们感谢您的反馈,以帮助我们确保其准确性和完整性。