This happened with me because I was using Next JS
which has server side rendering. When you are using server side rendering there is no browser. Hence, there will not be any variable window
or document
. Hence this error shows up.
Work around :
If you are using Next JS you can use the dynamic rendering to prevent server side rendering for the component.
import dynamic from 'next/dynamic' const DynamicComponentWithNoSSR = dynamic(() => import('../components/List'), { ssr: false }) export default () => <DynamicComponentWithNoSSR />
If you are using any other server side rendering library. Then add the code that you want to run at the client side in componentDidMount
. If you are using React Hooks then use useEffects
in the place of componentsDidMount
.
import React, {useState, useEffects} from 'react'; const DynamicComponentWithNoSSR = <>Some JSX</> export default function App(){ [a,setA] = useState(); useEffect(() => { setA(<DynamicComponentWithNoSSR/>) }); return (<>{a}<>) }
References :