editor icon indicating copy to clipboard operation
editor copied to clipboard

[BUG] markdownShortcutPlugin throws "Prism is not defined" error when minified

Open dylanpyle opened this issue 1 year ago • 5 comments

  • [x] I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
  • [x] I have read the documentation and cannot find an answer.

Describe the bug When the markdownShortcutPlugin is enabled - if you build your project using esbuild (a very popular bundler, also used in Vite/etc) with --minify enabled, at runtime the app throws the following error:

bundle.js:170 Uncaught ReferenceError: Prism is not defined

Reproduction As this is specific to a build process, I've set up a new minimal reproduction repo here as I'm not sure it's possible in codesandbox? https://github.com/dylanpyle/mdxeditor-esbuild

To Reproduce

Steps to reproduce the behavior:

  • Clone the repo
  • npm install
  • ./compile
  • open index.html
  • Observe the runtime error

To confirm that it's specific to the markdownShortcutPlugin, remove this plugin from app.tsx and run ./compile again; observe that the app now loads successfully.

Expected behavior The app loads the editor.

Screenshots Screenshot 2024-06-12 at 11 48 51

Screenshot 2024-06-12 at 11 49 23

Desktop (please complete the following information):

  • OS: macOS
  • Browser: Chrome 126.0.6478.57
  • Dependencies:
  "dependencies": {
    "@mdxeditor/editor": "3.4.1",
    "esbuild": "0.21.5",
    "react": "18.3.1",
    "react-dom": "18.3.1"
  }

Additional context

This issue is not present when the output bundle is not minified.

dylanpyle avatar Jun 12 '24 15:06 dylanpyle

I've reported it here.

https://github.com/facebook/lexical/pull/5828#issuecomment-2160350493

As a workaround, we've had to use the CDN version of prism and add it to the index.html... It's ugly but fixes it. Still trying to figure out how to avoid needing Prism.

~~Also @dylanpyle could you also confirm it happens only with production build and not with dev build?~~

Saw the --minify flag

david10sing avatar Jun 13 '24 06:06 david10sing

I'm almost certain that the shortcuts assume the inclusion of the default Lexical code block implementation. It's unlikely for Lexical to fix this, I believe. The proper way would be to inline the shortcut implementation in the MDXEditor and maybe drop the reference to @lexical/markdown. Which would be a shame, as the shortcut code is quite complex.

petyosi avatar Jun 13 '24 07:06 petyosi

For what it's worth - based on the docs I thought it was this plugin that provided the Command-[B/U/I/K] shortcuts, but they seem to work without it — so not pressing on my end. Worth updating the docs to specify that?

dylanpyle avatar Jun 14 '24 18:06 dylanpyle

Is there any update on fixing it? I encountered the same issue 🥲

jjanczur avatar Aug 27 '24 13:08 jjanczur

Same error on my side:

Uncaught ReferenceError: Prism is not defined

How to fix it ?


Fixed with:

https://github.com/remix-run/remix/discussions/8182#discussioncomment-13556853

benjamin-benoit avatar Sep 11 '25 08:09 benjamin-benoit