CKEditor5:无法读取未定义的属性“pluginName”

杰伦

我正在尝试为 CKEditor 制作一个自定义图像插件,它与我的定制图像上传系统集成。主要是,我在设置这个插件时遇到了问题。当我加载“开箱即用”插件时,一切正常(此外,当我删除自己的插件时,一切又像以前一样)。

我收到以下控制台错误:

main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:1322 TypeError: Cannot read property 'pluginName' of undefined
    at new ga (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:360)
    at new Ul (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:521)
    at new Lc (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:643)
    at new pp (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:1318)
    at n (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:643)
    at new Promise (<anonymous>)
    at Function.create (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:643)
    at Module.<anonymous> (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:1322)
    at n (main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:1)
    at main.511663b82f6b3e2bb9df.js?2754ab1fde8ef5d8fd3d:1

pluginName除了CKEditor 上的以下文档摘录外,我找不到有关该属性的任何信息

pluginName: 字符串 | 不明确的

插件的可选名称。如果设置,插件将通过其名称和构造函数在 get 中可用。如果没有,则只能通过其构造函数。

该名称应反映构造函数名称。

为了保持插件类定义紧密,建议将此属性定义为静态 getter:

export default class ImageCaption {
    static get pluginName() {
        return 'ImageCaption';
    }
}

注意:本机 Function.name 属性不能用于保留插件名称,因为它会在代码缩小期间被破坏。

将此函数插入​​我的插件代码不起作用,所以我在这里有点迷失了可能是什么问题。我在下面包含了我的代码。我已经根据CKEditor 高级设置,第一个选项,在 Webpack 中进行了设置。

我遗漏了什么,还是我的代码有问题?


索引.js

import ClassicEditor from './ckeditor'; // ckeditor.js in the same folder
import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
require("./css/index.css");
ClassicEditor
    // Note that you do not have to specify the plugin and toolbar configuration — using defaults from the build.
    .create( document.querySelector( '#editor' ))
    .then( editor => {
      editor.commands.get( 'imageStyle' ).on( 'execute', ( evt, args ) => {
          // ...
          // this snippet of code works; it concerns hooking into the default image plugin
          // ...
      } );
    } )
    .catch( error => {
        console.error( error.stack );
    } );

ckeditor.js

import ClassicEditorBase from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
import EssentialsPlugin from '@ckeditor/ckeditor5-essentials/src/essentials';
import UploadAdapterPlugin from '@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter';
import AutoformatPlugin from '@ckeditor/ckeditor5-autoformat/src/autoformat';
import BoldPlugin from '@ckeditor/ckeditor5-basic-styles/src/bold';
import ItalicPlugin from '@ckeditor/ckeditor5-basic-styles/src/italic';
import ImagePlugin from '@ckeditor/ckeditor5-image/src/image';
import ImageCaptionPlugin from '@ckeditor/ckeditor5-image/src/imagecaption';
import ImageStylePlugin from '@ckeditor/ckeditor5-image/src/imagestyle';
import ImageToolbarPlugin from '@ckeditor/ckeditor5-image/src/imagetoolbar';
import ImageUploadPlugin from '@ckeditor/ckeditor5-image/src/imageupload';
import LinkPlugin from '@ckeditor/ckeditor5-link/src/link';
import ListPlugin from '@ckeditor/ckeditor5-list/src/list';
import ParagraphPlugin from '@ckeditor/ckeditor5-paragraph/src/paragraph';
import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';
import MediaEmbed from '@ckeditor/ckeditor5-media-embed/src/mediaembed';
import Table from '@ckeditor/ckeditor5-table/src/table';
import TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar';

import ImageLibrary from './js/image-library.js'; // file containing the code for my custom plugin

export default class ClassicEditor extends ClassicEditorBase {}

ClassicEditor.builtinPlugins = [
    EssentialsPlugin,
    UploadAdapterPlugin,
    AutoformatPlugin,
    BoldPlugin,
    ItalicPlugin,
    Highlight,
    MediaEmbed,
    Table,
    TableToolbar,
    ImagePlugin,
    ImageCaptionPlugin,
    ImageStylePlugin,
    ImageToolbarPlugin,
    ImageUploadPlugin,
    LinkPlugin,
    ListPlugin,
    ParagraphPlugin,
    ImageLibrary // my custom plugin
];

ClassicEditor.defaultConfig = {
  highlight: {
        options: [
          {
                model: 'redPen',
                class: 'pen-red',
                title: 'Red pen',
                color: '#DD3300',
                type: 'pen'
            },
            {
                model: 'bluePen',
                class: 'pen-blue',
                title: 'Blue pen',
                color: '#0066EE',
                type: 'pen'
            },
            {
                model: 'greenPen',
                class: 'pen-green',
                title: 'Green pen',
                color: '#22AA22',
                type: 'pen'
            }
        ]
    },
    toolbar: {
        items: [
            //'heading',
            //'|',
            'bold',
            'italic',
            'link',
            'highlight:redPen', 'highlight:greenPen', 'highlight:bluePen', 'removeHighlight',
            '|',
            'bulletedList',
            'numberedList',
            '|',
            'mediaembed',
            'inserttable',
            '|',
            'undo',
            'redo'
        ]
    },
    image: {
        toolbar: [
            'imageStyle:full',
            'imageStyle:alignCenter',
            '|',
            'imageTextAlternative'
        ],
        styles: [
          'full','alignCenter'
        ]
    },
    table : {
      contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]
    },
    language: 'nl'
};

图像库.js

import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
import Command from '@ckeditor/ckeditor5-core/src/command';

class RoodCMSImageCommand extends Command {
    static get requires() {
        return [ ModelElement ];
    }
    execute( message ) {
      console.log(message);
    }
}
class ImageLibrary extends Plugin {
    static get requires() {
        return [ ModelElement ];
    }
    static get pluginName() {
        return 'ImageLibrary';
    }
    init() {
        // Initialize your plugin here.
        const editor = this.editor;
        console.log("plugin initialized.",editor);
    }
}

更新:基于 Maciej Bukowski 回答的解决方案

Maciej 指出该类ImageLibrary(我尝试导入的)缺少export. 我很容易遗漏的一点是,无论何时您正在使用import某样东西,您都必须同时使用export它,否则它将无法使用。关键字export default对我有用。

罪魁祸首是 image-library.js,为此我更改了以下行:

class ImageLibrary extends Plugin {
    // ... this failed, as it missed the `export default` keywords
}

进入以下内容:

export default class ImageLibrary extends Plugin {
    // ... works, as I properly export what I want to import.
}
马切伊·布考斯基

从'./js/image-library.js'导入ImageLibrary;

您不会从文件中导出该库,因此这就是您遇到错误的原因Cannot read property 'pluginName' of undefined因为ImageLibrary文件中找不到它,所以ckeditor.js变成了undefinedimage-library

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Jquery:CKEDITOR无法读取未定义的属性'GetData'

来自分类Dev

无法读取未定义的属性-p5js

来自分类Dev

Angular 5 无法读取未定义的属性“目标”

来自分类Dev

Angular 5:TypeError:无法读取未定义的属性“密码”

来自分类Dev

角度 5 数组无法读取未定义的属性“”

来自分类Dev

无法读取未定义/未定义的属性

来自分类Dev

TypeError:无法读取未定义的属性“未定义”

来自分类Dev

bootstrapvalidator在ckeditor字段上给出“无法读取未定义的属性'group'”

来自分类Dev

CkEditor:未捕获的TypeError:无法读取未定义的属性'indexOf'

来自分类Dev

CkEditor:未捕获的TypeError:无法读取未定义的属性'indexOf'

来自分类Dev

无法读取未定义的属性“ $ valid”

来自分类Dev

无法读取未定义的属性“ ObjectID”

来自分类Dev

angularjs无法读取未定义的属性

来自分类Dev

无法读取未定义的属性“ main”

来自分类Dev

无法读取未定义的属性“ forEach”

来自分类Dev

无法读取未定义的属性“ MyProperty”

来自分类Dev

无法读取未定义的属性“ split”

来自分类Dev

无法读取未定义的属性“ $ scope”

来自分类Dev

无法读取未定义的属性“协议”

来自分类Dev

无法读取未定义的属性“ toJSON”

来自分类Dev

无法读取未定义的属性“ attr”

来自分类Dev

无法读取未定义的属性“ helpers”

来自分类Dev

无法读取未定义的属性“ setBounds”

来自分类Dev

无法读取未定义的属性“模块”

来自分类Dev

.done()无法读取未定义的属性

来自分类Dev

无法读取未定义的属性“ getTime”

来自分类Dev

无法读取未定义的属性'indexOf'

来自分类Dev

无法读取未定义的属性“ pushState”

来自分类Dev

无法读取未定义的属性“ debugHosts”

Related 相关文章

  1. 1

    Jquery:CKEDITOR无法读取未定义的属性'GetData'

  2. 2

    无法读取未定义的属性-p5js

  3. 3

    Angular 5 无法读取未定义的属性“目标”

  4. 4

    Angular 5:TypeError:无法读取未定义的属性“密码”

  5. 5

    角度 5 数组无法读取未定义的属性“”

  6. 6

    无法读取未定义/未定义的属性

  7. 7

    TypeError:无法读取未定义的属性“未定义”

  8. 8

    bootstrapvalidator在ckeditor字段上给出“无法读取未定义的属性'group'”

  9. 9

    CkEditor:未捕获的TypeError:无法读取未定义的属性'indexOf'

  10. 10

    CkEditor:未捕获的TypeError:无法读取未定义的属性'indexOf'

  11. 11

    无法读取未定义的属性“ $ valid”

  12. 12

    无法读取未定义的属性“ ObjectID”

  13. 13

    angularjs无法读取未定义的属性

  14. 14

    无法读取未定义的属性“ main”

  15. 15

    无法读取未定义的属性“ forEach”

  16. 16

    无法读取未定义的属性“ MyProperty”

  17. 17

    无法读取未定义的属性“ split”

  18. 18

    无法读取未定义的属性“ $ scope”

  19. 19

    无法读取未定义的属性“协议”

  20. 20

    无法读取未定义的属性“ toJSON”

  21. 21

    无法读取未定义的属性“ attr”

  22. 22

    无法读取未定义的属性“ helpers”

  23. 23

    无法读取未定义的属性“ setBounds”

  24. 24

    无法读取未定义的属性“模块”

  25. 25

    .done()无法读取未定义的属性

  26. 26

    无法读取未定义的属性“ getTime”

  27. 27

    无法读取未定义的属性'indexOf'

  28. 28

    无法读取未定义的属性“ pushState”

  29. 29

    无法读取未定义的属性“ debugHosts”

热门标签

归档