egoist / docute

📚 Effortless documentation, done right.
https://docute.egoist.dev
MIT License
3.8k stars 427 forks source link

Cannot read property 'highlight' of undefined - when using an indented code block #179

Open wsw70 opened 5 years ago

wsw70 commented 5 years ago

This bug was initially submitted with marked.js (https://github.com/markedjs/marked/issues/1348) but it seems the problem is finally with Docute. Please also see the comment at https://github.com/markedjs/marked/issues/1348#issuecomment-426269743

Description

Using the example HTML file with a specific README.md, the site is not rendered and the console mentions

Uncaught (in promise) TypeError: Cannot read property 'highlight' of undefined
Please report this to https://github.com/markedjs/marked.
    at U.n.code (docute.js:1)
    at V.tok (docute.js:1)
    at V.parse (docute.js:1)
    at Function.V.parse (docute.js:1)
    at rt (docute.js:1)
    at docute.js:1

Reproduction

Expose the following two files via a web server (devd in my case), the HTML file is the first example given in Docute.

The error is on the block containing code

<!DOCTYPE>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>My Docs</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docute@4/dist/docute.css">
  </head>
  <body>
    <div id="docute"></div>
    <script src="https://cdn.jsdelivr.net/npm/docute@4/dist/docute.js"></script>
    <script>
      new Docute({
        target: '#docute'
      })
    </script>
  </body>
</html>

--- snip --- text

code

text --- snip ---

wsw70 commented 5 years ago

Please let me know if the landing place of the bug is correct or not.

styfle commented 5 years ago

My guess is that the problem lies in the /src/utils/markedRenderer.js file since it overrides marked's renderer.

egoist commented 5 years ago

which version are you using? it is supposed to be fixed in 4.0.7

wsw70 commented 5 years ago

@egoist I use the one from the example HTML (https://cdn.jsdelivr.net/npm/docute@4/dist/docute.js). At the end of that file (it is minified so I am not sure where to look) I see er.version="4.0.6"

On the other hand

$ npm view docute version
4.0.7

so I will be better off using an installed version (which leaves the question of the CSS open but it is another problem)