我正在尝试让EditorJS在 NextJS 中工作。编辑器在没有插件的情况下加载良好,只有一个段落作为块选项。但是,当我尝试通过工具道具控制台添加插件时,会抛出以下警告:
editor.js?9336:2 Module Tools was skipped because of TypeError: Cannot read property 'prepare' of undefined
Run Code Online (Sandbox Code Playgroud)
当我点击浏览器中的编辑器时,它抛出:
Uncaught TypeError: Cannot read property 'holder' of undefined
Run Code Online (Sandbox Code Playgroud)
我已经在普通的 React 应用程序中测试了编辑器插件,它们加载得很好。这意味着问题出在 EditorJS 和 NextJS 导入和插件处理中。我曾尝试使用 require 在 componentDidMount 挂钩中导入编辑器和插件,但遇到了与 NextJS 动态导入相同的问题。尝试使用 React ref 获取组件,但发现当前NextJS 在获取组件的 refs 方面存在问题,尝试了建议的解决方法,但仍然没有结果。在触发 onChange 之前,编辑器的实例不可用,因此由于“准备”属性,插件无法连接到编辑器,或者在编辑器上的事件发生之前,整个编辑器都未定义,但编辑器输出到控制台它准备好了。
我的组件代码:
import React from "react";
import dynamic from "next/dynamic";
const EditorNoSSR = dynamic(() => import("react-editor-js"), { ssr: false });
const Embed = dynamic(() => import("@editorjs/embed"), { ssr: false }); …Run Code Online (Sandbox Code Playgroud)