godsplane
@godsplane

Почему draft mode не работает с динамическими страницами на vercel, а на локалке все работает?

Делаю что-то типа "чернового" режима.

У меня есть json всех страниц у которых есть флаг published

На главной я собираю страницу так:

spoiler
export async function getStaticProps({ locale, locales, draftMode }) {
    const data = await getPageData(locale, 'home');
    const globalProps = await getGlobalData(locale);
    console.log(data.published);
    if (!data.published && !draftMode) {
        return {
            notFound: true,
        };
    }

    const props = {
        data,
        globalProps,
        locales,
    };

    if (draftMode !== undefined) {
        props.draftMode = draftMode;
    }

    return {
        props,
        revalidate: 1,
    };
}


На других динамических страницах так:

spoiler
export async function getStaticProps({ params, locale, locales, draftMode }) {
    const data = await getPageData(locale, params.slug);
    const globalProps = await getGlobalData(locale);
    console.log('kek:', data.published, draftMode);

    if (!data.published && !draftMode) {
        return {
            notFound: true,
        };
    }

    const props = {
        data,
        globalProps,
        locales,
    };

    if (draftMode !== undefined) {
        props.draftMode = draftMode;
    }

    return {
        props,
        revalidate: 1,
    };
}

export async function getStaticPaths({ locales }) {
    const paths = await Promise.all(
        locales.map(async (locale) => {
            const data = await getAllPageIds(locale);
            return data
                .flatMap((item) => {
                    if (item.resources) {
                        return item.resources.map((resource) => ({
                            params: {
                                slug: resource.alias,
                            },
                            locale,
                        }));
                    } else {
                        return {
                            params: {
                                slug: item.alias,
                            },
                            locale,
                        };
                    }
                })
                .filter((item) => item.params.slug !== 'home');
        }),
    );

    return {
        paths: paths.flat(),
        fallback: false,
    };
}


То есть если флаг published:false, то я его не включаю в изначальную сборку приложения, но если он false,а draftmode: true, то я показываю эти страницы.

Но по какой то причине вариант с флагом (до этого я просто фильтровал по языку и драфт моду) не работает на vercel на динамических страницах, но при этом работает на локалке и в дев моде и в собранном (npm run build -> npm run start).

Что я упускаю?
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
godsplane
@godsplane Автор вопроса
Ладно это был просто кэш vercel,
помогло сделать redeploy
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы