margox / braft-editor

美观易用的React富文本编辑器,基于draft-js开发
MIT License
4.6k stars 595 forks source link

不支持 ViteJS? #935

Closed Dreamer-Paul closed 2 years ago

Dreamer-Paul commented 2 years ago

本地项目安装之后提示报错:

Uncaught ReferenceError: global is not defined
    at node_modules/fbjs/lib/setImmediate.js (setImmediate.js:15)
    at __require2 (chunk-IHTDASF6.js?v=11669d2e:17)
    at node_modules/draft-js/lib/editOnBeforeInput.js (editOnBeforeInput.js:25)
    at __require2 (chunk-IHTDASF6.js?v=11669d2e:17)
    at node_modules/draft-js/lib/DraftEditorEditHandler.js (DraftEditorEditHandler.js:16)
    at __require2 (chunk-IHTDASF6.js?v=11669d2e:17)
    at node_modules/draft-js/lib/DraftEditor.react.js (DraftEditor.react.js:32)
    at __require2 (chunk-IHTDASF6.js?v=11669d2e:17)
    at node_modules/draft-js/lib/Draft.js (Draft.js:24)
    at __require2 (chunk-IHTDASF6.js?v=11669d2e:17)

然后,试着在沙箱里面还原,只要引入组件就 Server Connection Lost,相反直接使用 CRA(WebPack)作为脚手架的情况下引入就没事

Demo: https://codesandbox.io/s/dreamy-keller-50d0w?file=/src/App.tsx

如果一直无法连接,尝试把 App.tsx 的组件引用删除

Dreamer-Paul commented 2 years ago

检查了一下,是 draft-js 的 setImmediate 这个东西太旧了,用了不受支持的老标准。目前得知的正确方法是将 global 替换成 globalThis 才支持。改不了源码的情况下就直接在浏览器上赋值了。

<script>const global = globalThis</script>

https://stackoverflow.com/questions/65586906/react-and-electron-with-draft-js-global-is-not-defined

WebPack 没有问题可能是因为它本身就有一个兼容操作吧...