bobheadxi / readable

👓 Opinionated Markdown formatter, featuring semantic line breaks
https://bobheadxi.dev/semantic-line-breaks/
20 stars 4 forks source link

ERROR failed to render 'TEST.md', aborting: ReferenceError: document is not defined #22

Closed rooterkyberian closed 1 year ago

rooterkyberian commented 1 year ago

./dev readable fmt TEST.md --log-level DEBUG results in: ERROR failed to render 'TEST.md', aborting: ReferenceError: document is not defined

after adding log.error(err.stack); to lib/walk.ts I'm getting:

ERROR fmt: ReferenceError: document is not defined
    at Object.decodeEntity [as default] (https://jspm.dev/npm:parse-entities@2.0.0/decode-entity!cjs:12:14)
    at value (https://jspm.dev/npm:micromark@2.11.4/dist/parse!cjs:1448:76)
    at go (https://jspm.dev/npm:micromark@2.11.4/dist/parse!cjs:810:13)
    at main (https://jspm.dev/npm:micromark@2.11.4/dist/parse!cjs:800:11)
    at Object.write (https://jspm.dev/npm:micromark@2.11.4/dist/parse!cjs:744:5)
    at subcontent (https://jspm.dev/npm:micromark@2.11.4/_/4550b33d.js:133:17)
    at subtokenize (https://jspm.dev/npm:micromark@2.11.4/_/4550b33d.js:54:23)
    at postprocess (https://jspm.dev/npm:micromark@2.11.4/dist/postprocess!cjs:10:11)
    at fromMarkdown (https://jspm.dev/npm:mdast-util-from-markdown@0.8.5!cjs:32:28)
    at parse (https://jspm.dev/npm:remark-parse@9.0.0!cjs:12:12)
ERROR failed to render 'TEST.md', aborting: ReferenceError: document is not defined

As a workaround, I applied this patch:

diff --git a/readable.ts b/readable.ts
index b44ed82..1cf867a 100644
--- a/readable.ts
+++ b/readable.ts
@@ -7,6 +7,12 @@ import check from "./cmd/check.ts";
 import fmt, { FmtOptions } from "./cmd/fmt.ts";
 import setupLogger from "./lib/setupLogger.ts";

+import { DOMParser } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";;
+
+const parser = new DOMParser();
+const doc = parser.parseFromString("<!DOCTYPE html><html><head></head><body></body></html>", "text/html");
+globalThis.document = doc;
+
 const cli = cac("readable")
   .version(READABLE_VERSION)
   .help()

which allowed me to execute readalbe successfully. I don't know if this is an acceptable long term fix or not. It seems like for some reason a browser versions of dependencies are pulled in and it would be probably better to fix that problem.

bobheadxi commented 1 year ago

Happy to accept this as a PR - I noticed that quite a few things have changed in Deno since I last worked seriously on this project. Only ask would be to have the import in the import map :)

rooterkyberian commented 1 year ago

:+1: here is the PR: https://github.com/bobheadxi/readable/pull/24 :)