:warning: This package has been deprecated. Happy DOM now supports this feature built in by setting "errorCapture" to "processLevel". :warning:

About
Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.
The goal of Happy DOM is to emulate enough of a web browser to be useful for testing, scraping web sites and server-side rendering.
Happy DOM focuses heavily on performance and can be used as an alternative to JSDOM.
This package contains a tool that can observe uncaught exceptions and Promise rejections in Happy DOM. It will dispatch uncaught errors as events on the Happy DOM Window instance.
Uncaught exceptions and rejections must be listened to on the NodeJS process at a global level. This tool will therefore not work in all environments as there may already be listeners added by other libraries on the NodeJS process that may conflict.
DOM Features
And much more..
Works With
Module Systems
Installation
npm install happy-dom @happy-dom/uncaught-exception-observer
Usage
import { Window } from "happy-dom";
import { UncaughtExceptionObserver } from "@happy-dom/uncaught-exception-observer";
const window = new Window();
const document = window.document;
const observer = new UncaughtExceptionObserver();
observer.observe(window);
window.addEventListener((error) => {
});
document.write(`
<script>
(() => {
async function main() {
await fetch('https://localhost:3000/')
throw Error('This error will be caught, but would otherwise have terminated the process.');
}
main();
})();
</script>
`);
observer.disconnect();
Documentation
Read more about how Happy DOM works in our documentation.
Performance
Import / Require | 333 ms | 45 ms |
Parse HTML | 256 ms | 26 ms |
Serialize HTML | 65 ms | 8 ms |
Render custom element | 214 ms | 19 ms |
querySelectorAll('tagname') | 4.9 ms | 0.7 ms |
querySelectorAll('.class') | 6.4 ms | 3.7 ms |
querySelectorAll('[attribute]') | 4.0 ms | 1.7 ms |
querySelectorAll('[class~="name"]') | 5.5 ms | 2.9 ms |
querySelectorAll(':nth-child(2n+1)') | 10.4 ms | 3.8 ms |
See how the test was done here
