-
-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ReferenceError: document is not defined at createTag... #101
Comments
Got the same error |
Got the same error, but everything works fine |
Same error. |
use nvm 18.18.2 for temporary |
same error with node 21 |
Hey folks, this error happens because
This is not valid anymore though, because Node v21 introduces a new navigator API, previously present only in client-side code. So |
Thank you so much! |
Why was this issue closed? Was solved? Thank you for now |
this issue should remain open. not fixed for node >= 20 |
+1 |
Oh I am sorry. |
thanks @Beruguru 🙏
EDIT: I had a chance to write a small articlehttps://medium.com/@alonmiz1234/lazy-load-lottie-animation-in-react-e58e67e2aa74 this example uses Skeleton from mantine but it can be replace with a simple loading animation you already have LazyLottie (Optimized for SSR)import { Skeleton } from '@mantine/core';
import { useQuery } from '@tanstack/react-query';
import { type LottieComponentProps } from 'lottie-react';
import { Suspense, lazy, useEffect, useRef, useState } from 'react';
const LazyLottieComponent = lazy(() => import('lottie-react'));
interface LottieProps<T extends Record<string, unknown>> {
getJson: () => Promise<T>;
id: string;
}
export function LazyLottie<T extends Record<string, unknown>>({
getJson,
id,
ref,
...props
}: LottieProps<T> & Omit<LottieComponentProps, 'animationData'>) {
const { data } = useQuery({
queryKey: [id],
queryFn: getJson,
enabled: typeof window !== 'undefined',
});
if (!data) return <Skeleton height={props.height} width={props.width} />;
return (
<Suspense fallback={<Skeleton height={props.height} width={props.width} />}>
<LazyLottieComponent animationData={data} {...props} />
</Suspense>
);
} Usageexport const EmptyState: React.FC = () => {
return (
<LazyLottie
getJson={() => import('../../../assets/lottie/empty-box.json')}
loop
id="empty-box"
width={120}
height={120}
/>
);
}; |
Next.js. Lottie-web uses the window object, which is not available during SSR. To fix this use the following code:
|
Running into this issue consistently from using lottie-react in a component library that doesn't use next with nodejs 20.12.2. Lazy importing react-lottie or the component itself doesn't work either. |
@alan-nousot If you're importing a named export that uses const Component = dynamic(
async () =>
import('library').then(({ Component }) => ({
default: Component, // note the alias to `default`!
})),
{ ssr: false },
); |
Related to this github issue: Gamote/lottie-react#101 Issue: https://linear.app/plasmic/issue/PLA-10954/lottie-hostless-causing-issue Change-Id: Ifc5ebd7527a20a86ab05d40f0cb8391daaad86c9 GitOrigin-RevId: 5792ca5bafdb2f4a112c78cb0de116f3aac50968
Use node |
When is Lottie team planning to fix it? have been months |
I was using Node v22, using v20 sorted it out. |
Same issue here, had to downgrade node |
You can add |
Hello everyone,
I had some issues with ReferenceError (with SSR).
And yes I know, it could be solved by dynamic import, lazy or maybe some other ways.
But the situation is like below:
case1.
case2.
So, we (I and my co-worker) decided to fix Node version to 18 and it works fine.
But we are just curious about it.
Try to figure it out but all we can find is that the node version effects build in somehow.
If anyone knows what has been changed between 18 and higher, it would be nice to know of it.
Thank you so much.
The text was updated successfully, but these errors were encountered: