Задать вопрос
godsplan
@godsplan

Почему 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).

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

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

Похожие вопросы