node에서 showdown 라이브러리를 설치해서 사용
$ npm i showdown
makeMarkdown
메서드를 쓰면 window is not defined라고 에러가 뜬다.
.../node_modules/showdown/dist/showdown.js:2549
if (window && window.document) {
^
ReferenceError: window is not defined
if (!HTMLParser) {
if (window && window.document) {
HTMLParser = window.document
} else {
throw new Error(
`HTMLParser is undefined.
If in a webworker or nodejs environment,
you need to provide a WHATWG DOM and HTML such as JSDOM`
)
}
}
에러 부분의 코드를 보면 이런 식으로 되어 있는데, node에서는 window
, window.document
가 모두 없기 때문인듯하다.
HTMLParser
는 makeMarkdown
메서드의 두 번째 파라미터다.
에러 메시지가 알려주는대로 JSDOM을 사용하자.
globalThis.window
에 바인딩 해주자.
$ npm i jsdom
import showdown from "showdown"
import { JSDOM } from "jsdom"
globalThis.window = new JSDOM().window
const converter = new showdown.Converter()
console.log(converter.makeMarkdown(`<h2>hi from html</h2>`))
## hi from html