在线构建的自定义CKEditor在React中报错this.props.editor.create is not a function
问题解决步骤
this.props.editor.create is not a function 报错的本质是你传入React组件的编辑器实例不合法,没有暴露CKEditor要求的静态create方法,按照以下优先级排查:
- 第一步:检查自定义构建的包导入路径是否正确
你注释掉的import Editor from 'ckeditor5-custom-build/build/ckeditor';才是在线构建生成包的默认导入路径,你现在用的@ckeditor/ckeditor5-build-custom是官方预设包的命名规则,如果你没有把自己生成的自定义构建重新发布为这个名字的npm包,这个导入的就是空对象或者错误内容。
直接恢复注释的导入语句,把传入组件的editor属性改成editor={Editor}即可,修改后的代码参考:// 替换错误的导入语句 import Editor from 'ckeditor5-custom-build/build/ckeditor'; // 调用时传入正确的实例 <CKEditor editor={Editor} // 其余配置保持不变 /> - 第二步:确认自定义构建包的安装方式正确
你提到把生成的构建包放到了node_modules里,这种本地包安装不能直接复制粘贴文件夹,要在项目根目录执行npm install 你的自定义构建文件夹的本地绝对/相对路径,比如你把构建包放在项目根目录的ckeditor5文件夹下,就执行npm install ./ckeditor5,npm会自动完成包注册,避免导入时识别失败。 - 第三步:检查在线构建的编辑器类型是否匹配
你用的React CKEditor组件支持所有官方编辑器类型,如果在线构建时选的是DecoupledEditor/InlineEditor等非ClassicEditor类型,也不会影响功能,只要导入的是构建包导出的默认实例即可,不需要额外修改类型命名。 - 第四步:排查版本匹配问题
确保你安装的@ckeditor/ckeditor5-react组件的大版本和你自定义构建的CKEditor 5大版本一致,比如自定义构建用的是CKEditor 39.x版本,react组件也要用39.x对应版本,版本跨度过大会出现实例不兼容问题。
内容的提问来源于stack exchange,提问作者Sharp Dev
相关产品推荐
相关产品推荐

