capricorn86 / happy-dom

A JavaScript implementation of a web browser without its graphical user interface
MIT License
3.14k stars 189 forks source link

Calling `new HTMLElement()` throws exception #1481

Open gerbyzation opened 2 weeks ago

gerbyzation commented 2 weeks ago

Describe the bug happy-dom@>13.0.5 throws an exception when calling new HTMLElement()

To Reproduce

// repro.mjs
import { HTMLElement } from "happy-dom";

const el = new HTMLElement();
$ node repro.mjs
file:///Users/gerbenneven/projects/some-project/node_modules/.pnpm/happy-dom@14.12.3/node_modules/happy-dom/lib/nodes/node/Node.js:34
                throw new Error('Failed to construct "Node": No owner document in queue. Please use "NodeFactory" to create instances of a Node.');
                      ^

Error: Failed to construct "Node": No owner document in queue. Please use "NodeFactory" to create instances of a Node.
    at new Node (file:///Users/gerbenneven/projects/some-project/node_modules/.pnpm/happy-dom@14.12.3/node_modules/happy-dom/lib/nodes/node/Node.js:34:23)
    at new Element (file:///Users/gerbenneven/projects/some-project/node_modules/.pnpm/happy-dom@14.12.3/node_modules/happy-dom/lib/nodes/element/Element.js:28:9)
    at new HTMLElement (file:///Users/gerbenneven/projects/some-project/node_modules/.pnpm/happy-dom@14.12.3/node_modules/happy-dom/lib/nodes/html-element/HTMLElement.js:32:9)
    at file:///Users/gerbenneven/projects/some-project/dom-test.mjs:3:12
    at ModuleJob.run (node:internal/modules/esm/module_job:217:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:308:24)
    at async loadESM (node:internal/process/esm_loader:42:7)
    at async handleMainPromise (node:internal/modules/run_main:66:12)

Node.js v20.6.1

Expected behavior No exception to throw. Earlier versions (happy-dom@<=13.0.5) supported this without issue

Device:

Additional context Add any other context about the problem here.