1

Prismic を CMS として使用してアプリを展開しようとしていますが、ローカルではすべてが完全に機能しますが、vercel に展開すると次のエラーが表示されます。

19:09:51.850 | TypeError: Cannot read property 'titulo_categoria' of undefined

Prismic からデータを取得しようとすると、何か問題があるようです。私のコードは次のとおりです。

import {getAllCategorias, getCategory2} from '../../lib/api';

export default function Index({cat}) {
  return <>{cat.titulo_categoria[0].text}</>;
}

export async function getStaticProps({params}) {
  const data = await getCategory2(params.slug);
  return {
    props: {
      cat: data?.categorias ?? null,
    },
  };
}

export async function getStaticPaths() {
  const allPosts = await getAllCategorias();
  return {
    paths: allPosts?.map(({node}) => `/test/${node._meta.uid}`) || [],
    fallback: true,
  };
}

Prismic からデータを取得する API コードは次のとおりです。

import Prismic from 'prismic-javascript';

const REPOSITORY = process.env.PRISMIC_REPOSITORY_NAME;
const REF_API_URL = `https://${REPOSITORY}.prismic.io/api/v2`;
const GRAPHQL_API_URL = `https://${REPOSITORY}.prismic.io/graphql`;
// export const API_URL = 'https://your-repo-name.cdn.prismic.io/api/v2'
export const API_TOKEN = process.env.PRISMIC_API_TOKEN;
export const API_LOCALE = process.env.PRISMIC_REPOSITORY_LOCALE;

export const PrismicClient = Prismic.client(REF_API_URL, {
  accessToken: API_TOKEN,
});

async function fetchAPI(query, {previewData, variables} = {}) {
  const prismicAPI = await PrismicClient.getApi();
  const res = await fetch(
    `${GRAPHQL_API_URL}?query=${query}&variables=${JSON.stringify(variables)}`,
    {
      headers: {
        'Prismic-Ref': previewData?.ref || prismicAPI.masterRef.ref,
        'Content-Type': 'application/json',
        'Accept-Language': API_LOCALE,
        Authorization: `Token ${API_TOKEN}`,
      },
    }
  );

  if (res.status !== 200) {
    console.log(await res.text());
    throw new Error('Failed to fetch API');
  }

  const json = await res.json();
  if (json.errors) {
    console.error(json.errors);
    throw new Error('Failed to fetch API');
  }
  return json.data;
}

export async function getCategory2(slug) {
  const data = await fetchAPI(
    `
  query CategoryBySlug($slug: String!, $lang: String!) {
    categorias(uid: $slug, lang: $lang) {
      titulo_categoria
      _meta {
        uid
      }
    } 
  }
  `,
    {
      variables: {
        slug,
        lang: API_LOCALE,
      },
    }
  );

  return data;
}

これの何が問題なのですか?私は一日中それを理解しようとしていましたが、運がありませんでした

4

1 に答える 1