Open rbhalla opened 1 year ago
Vite uses WebComponents for the error overlay, but content scripts don't support WebComponents out of the box. CRXJS adds the polyfill in development but not in production.
If you can provide a link to a minimal reproduction repo, I'll be able to offer better advice.
Hey @jacksteamdev, appreciate your help here again.
Here is a reproduction: https://github.com/rbhalla/crxjs-bug-repro/tree/document-clone-node-bug
I guess this is technically a problem with the polyfill, but considering it doesn't play nicely with content scripts, I wonder if there's a way to not enable that functionality?
My experience with vite integration is poor so it's possible my understanding is flawed here. Keen to hear your take!
I am facing the same issue.
Ran into the same issue. @jacksteamdev is there a workaround?
same issue, may you kindly describe how this issue happens, so that i will try to fix it.
Facing the same issue. I'm using Vite and https://crxjs.dev/vite-plugin to build a chrome extension. When trying to run document.cloneNode(true) from within a content script, the browser throws an error: "TypeError: Cannot read properties of null". (even through the document node exist).
Anyone knows how to fix this?
Here's a hacky workaround:
const d = new DOMParser().parseFromString("<html><body></body>", "text/html");
d.body = document.body.cloneNode(true) as HTMLBodyElement;
Here's another workaround:
const d = new DOMParser().parseFromString(document.documentElement.outerHTML, 'text/html');
Compared to document.body.cloneNode
, there may be some performance loss, but it will include nodes outside the body, such as the head.
Build tool
Vite
Where do you see the problem?
Describe the bug
I am not able to called
document.cloneNode(true)
in a content script.It seems like this is a result of the webcomponents polyfill. Not something I was bumping into when using rollup.
It seems like in the prod build (using
vite build
) this problem doesn't occur.To clarify, I am not explicitly including this library or explicitly using web components.
Logs
System Info
Severity
blocking all usage of RPCE