flowbite-react: Error when using flowbite-react in Next.js: ReferenceError: document is not defined
Describe the bug
When rendering a page with a modal, if the page wasn’t navigated to from a previous context, e.g. using Link from next/link, then a huge stack trace about document being undefined appears from the Modal component.
To Reproduce Steps to reproduce the behavior:
Use the Modal in any Next.js 13 page.
Expected behavior The modal should open and the page should load normally.
Screenshots If applicable, add screenshots to help explain your problem.
System information:
- Device: Desktop PC
- Resolution: 1440p
- OS: Windows 10
- Browser: Firefox
- Version: Windows 10
Project information:
- Tailwind: 3.2.0
- Flowbite: 1.6.3
- Flowbite React: 0.3.8
- Type: Next.js
Additional context Error trace:
1 of 1 unhandled error
Server Error
ReferenceError: document is not defined
This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
ModalComponent
file:/home/oleg/case0/node_modules/.pnpm/flowbite-react@0.3.8_m4gtgwxodlxragupfwvq4tjnru/node_modules/flowbite-react/lib/cjs/components/Modal/Modal.js (17:50)
renderWithHooks
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5658:16)
renderIndeterminateComponent
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5731:15)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderIndeterminateComponent
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5785:7)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderChildrenArray
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6211:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6141:7)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderHostElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5642:3)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5952:5)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderIndeterminateComponent
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5785:7)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderChildrenArray
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6211:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6141:7)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderChildrenArray
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6211:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6141:7)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderHostElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5642:3)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5952:5)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderChildrenArray
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6211:7)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6141:7)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderNode
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6259:12)
renderHostElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5642:3)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5952:5)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderContextProvider
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5920:3)
renderElement
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6017:11)
renderNodeDestructiveImpl
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6104:11)
renderNodeDestructive
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (6076:14)
renderIndeterminateComponent
file:/home/oleg/case0/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js (5785:7)
About this issue
- Original URL
- State: closed
- Created a year ago
- Reactions: 10
- Comments: 22 (5 by maintainers)
Commits related to this issue
- Fix errors with modal when document is undefined Fixes #591 and #573 — committed to multiwebinc/flowbite-react by multiwebinc a year ago
Can confirm this is happening here too, since last release 0.3.8
@rluders its because flowbite-next-starter is actually running on 0.3.7, if you see here: https://github.com/tulupinc/flowbite-next-starter/blob/main/yarn.lock#L1612
If you clone the repo, delete yarn.lock and then
yarn installit will install the latest flowbite-react which is 0.3.8. Then the error mentioned in this issue occurs fromyarn buildI’ve opened up a fix here https://github.com/themesberg/flowbite-react/pull/677
In the mean time, I’ve published the changes under"@alfiejones/flowbite-react"
Any news as to when this fix might be released, @tulup-conner ?
@nsoubelet My workaround has been to not use the flowbite-react component and instead convert the HTML they provide on flowbite.com into a Modal that I display on my page like this:
Hi, also happening to me using the following versions:
@osilkin98 Have you found a workaround? Since I am not sure when the fix will be released.
@tulup-conner I’m still having this issue on Flowbite v0.4.2
This is still broken on 0.4.1