GoogleChromeLabs / critters

🦔 A Webpack plugin to inline your critical CSS and lazy-load the rest.

Home Page:https://npm.im/critters-webpack-plugin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot read properties of undefined (reading 'setAttribute')

mgalasso opened this issue · comments

In Angular 16, during a build (ng build), there is an unhandled error within critters.js:519:30

Here is the code snippet within critters.js:
if (!crittersContainer) {
document.documentElement.setAttribute('data-critters-container', '');
crittersContainer = document.documentElement;
}

Here is the error message:
[error] TypeError: Cannot read properties of undefined (reading 'setAttribute')
at createDocument (C:\Development\sourcecode\sequoia\node_modules\critters\dist\critters.js:519:30)
at CrittersExtended.process (C:\Development\sourcecode\sequoia\node_modules\critters\dist\critters.js:1123:22)
at InlineCriticalCssProcessor.process (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\utils\index-file\inline-critical-css.js:167:40)
at C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\utils\index-file\index-html-generator.js:123:64
at IndexHtmlGenerator.process (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\utils\index-file\index-html-generator.js:65:34)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async execute (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\builders\browser-esbuild\index.js:107:47)
at async withSpinner (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\tools\esbuild\utils.js:73:16)
at async buildEsbuildBrowserInternal (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\build-angular\src\builders\browser-esbuild\index.js:207:18)
at async handleAsyncIterator (C:\Development\sourcecode\sequoia\node_modules@angular-devkit\architect\src\api.js:35:28)

As a consequence, the index.html cannot be built within the Angular project. (Index html generation failed.)

i get a similar one with angular 16. and yes, only on ng build. the ng serve works perfect

✖ Index html generation failed. document.documentElement.setAttribute is not a function

I'm facing the same issue in Next.js 13 and critters@0.0.20. It only happens with server-side rendering in some cases

same here in vite

same here. Angular 17. ng serve working perfectly. ng build failling with Index html generation failed. Cannot read properties of undefined (reading 'setAttribute') error

Same here with Angular 17

Also, facing the same issue while building the application. Does anyone know the root cause of this error?