editor-js / image

Image Block for Editor.js
MIT License
234 stars 282 forks source link

Cannot assign to read only property 'caption' #219

Open rocketana opened 1 year ago

rocketana commented 1 year ago

A copy of the closed for any weird reason issue #179. The problem is still here.

The following error occurs after image uploading: Saving failed due to the Error TypeError: Cannot assign to read only property 'caption' of object '#<Object>'

As soon as any image added to the editor, the whole saving process is broken, no changed to other blocks can be saved due to the error.

The error comes from here:

{
    key: "save",
    value: function() {
        var e = this.ui.nodes.caption;
        return this._data.caption = e.innerHTML,  <--------- error
        this.data
    }
}

The problem may come from here :

# src/ui.js
caption: make('div', [this.CSS.input, this.CSS.caption], {
   contentEditable: !this.readOnly,
}),

But setting readOnly: false in the EditorJS config or the tool's config doesn't change anything.

Also, I see that the caption node is rendered correctly in the DOM:

<div class="cdx-input image-tool__caption" contenteditable="true" data-placeholder=""></div>

An ugly and absolutely not recommended solution that I used for now to make the editor work again - I changed the caption assignment in bundle. js. This way saving of the caption works as expected as well as all other data.

{
    key: "save",
    value: function() {
        var e = this.ui.nodes.caption;
        this._data = {...this._data, caption: e.innerHTML};
        return this._data, this.data
    }
}

Hopefully, I'll find another solution later as the the author of this tool seemed abandoned the project and is not going to fix issues.

yaroslavx commented 1 year ago

@rocketana have you found a solution for that problem? i have the same, and would be happy to fix it)

creotip commented 8 months ago

i have the same problem

Verickg commented 4 months ago

Same problem with image caption, attached title and embed, any alternative?