emoji-picker-react icon indicating copy to clipboard operation
emoji-picker-react copied to clipboard

document is not defined in SSR (nextJs)

Open rakibpaucse opened this issue 3 years ago • 11 comments

I am getting ReferenceError: document is not defined error even when I import Picker this only. Dont you have SSR support in V3 ?

rakibpaucse avatar Apr 08 '21 17:04 rakibpaucse

import dynamic from "next/dynamic";
import { IEmojiPickerProps } from "emoji-picker-react";
const EmojiPickerNoSSRWrapper = dynamic<IEmojiPickerProps>(
  () => import("emoji-picker-react"),
  {
    ssr: false,
    loading: () => <p>Loading ...</p>,
  }
);

ohasy avatar Apr 15 '21 18:04 ohasy

this didn't worked

import dynamic from "next/dynamic";
import { IEmojiPickerProps } from "emoji-picker-react";
const EmojiPickerNoSSRWrapper = dynamic<IEmojiPickerProps>(
  () => import("emoji-picker-react"),
  {
    ssr: false,
    loading: () => <p>Loading ...</p>,
  }
);

namansukhwani avatar Jun 24 '21 10:06 namansukhwani

Another workaround for this is to use the vanilla dynamic importation like this:

let Picker;
if (typeof window !== 'undefined') {
  import('emoji-picker-react').then(_module => {
    Picker = _module.default;
  });
}

matheusslg avatar Jul 21 '21 18:07 matheusslg

I'm also getting this error now and again what could be the remedy for this issue

Chukstart avatar Aug 06 '21 21:08 Chukstart

This works:

import dynamic from 'next/dynamic';
const Picker = dynamic(() => import('emoji-picker-react'), { ssr: false });


kedarguy avatar Aug 11 '21 13:08 kedarguy

This works:

import dynamic from 'next/dynamic';
const Picker = dynamic(() => import('emoji-picker-react'), { ssr: false });

Yeah, It's also worked for me.

Rayhan926 avatar Aug 25 '21 17:08 Rayhan926

Any update on this? About giving patch or something?

codedthemes avatar Mar 05 '22 05:03 codedthemes

This works:

import dynamic from 'next/dynamic';
const Picker = dynamic(() => import('emoji-picker-react'), { ssr: false });

Works for me!

Twonarly1 avatar May 08 '22 00:05 Twonarly1

Thanks

mssoo7 avatar Jun 09 '22 12:06 mssoo7

This works:

import dynamic from 'next/dynamic';
const Picker = dynamic(() => import('emoji-picker-react'), { ssr: false });

Works for me!

When i try to build, it still throws the same error ReferenceError: document is not defined

diegoalzate avatar Jul 13 '22 17:07 diegoalzate

Another workaround for this is to use the vanilla dynamic importation like this:

let Picker;
if (typeof window !== 'undefined') {
  import('emoji-picker-react').then(_module => {
    Picker = _module.default;
  });
}

This worked for me. We're not using Next, but seems like it should work for any SSR/Node environment.

shanesc avatar Jul 21 '22 18:07 shanesc