Maison >interface Web >js tutoriel >Pourquoi est-ce que j'obtiens des erreurs de récupération lors de la création de la production de mon site Web statique Next.js ?

Pourquoi est-ce que j'obtiens des erreurs de récupération lors de la création de la production de mon site Web statique Next.js ?

DDD
DDDoriginal
2024-12-30 19:55:09479parcourir

Why Do I Get Fetch Errors During My Next.js Static Website Production Build?

Erreur de récupération lors de la création de la production d'un site Web statique Next.js

Lors de la création d'un site Web Next.js en production, vous pouvez rencontrer des erreurs de récupération qui ne se produisent pas lors de l'exécution dans mode de développement. Cela peut être frustrant et déroutant.

Comprendre l'erreur

Le message d'erreur "FetchError : corps de réponse json non valide à..." indique souvent un problème avec la réponse JSON renvoyée par votre route API. . Plus précisément, l'erreur « Jeton T inattendu dans JSON à la position 0 » suggère que le serveur renvoie des données JSON non valides.

Causes et solutions

Appel de routes API internes

Dans Next.js, il est essentiel d'éviter d'appeler des routes API internes dans getStaticProps. Les routes API internes ne sont pas disponibles pendant la construction car le serveur n'a pas encore été démarré.

Solution : Remplacez l'appel de route API dans getStaticProps par du code direct côté serveur qui effectue les tâches nécessaires. récupération de données.

URL absolues dans la récupération

Si vous supprimez le AssetPrefix de next.config.js, assurez-vous que les URL utilisées lors de la récupération sont absolues. Les URL relatives peuvent ne pas fonctionner dans les versions de production.

Solution :Modifiez les appels de récupération pour utiliser des URL absolues.

Refactor de code

Voici une version refactorisée version de votre code qui évite le erreurs :

// pages/product/[slug]
import db from '../../../data/products'

// Remaining code...

export const getStaticProps = async ({ params: { slug }, locale }) => {
  const result = db.filter(item => item.slug === slug);
  const data = result.filter(item => item.locale === locale)[0];
  const { title, keywords, description } = data;
  return {
    props: {
      data,
      description,
      keywords,
      title,
    },
  };
};

export const getStaticPaths = async () => {
  const paths = db.map(({ slug, locale }) => ({ params: { slug }, locale }));
  return {
    fallback: true,
    paths,
  };
};

Conclusion

En comprenant les causes des erreurs de récupération lors des builds de production Next.js et en appliquant les solutions appropriées, vous pouvez garantir un déploiement réussi de votre site Web statique. N'oubliez pas d'éviter d'appeler des routes API internes dans getStaticProps, d'utiliser des URL absolues lors de la récupération et de préférer le code direct côté serveur pour la récupération de données dans les versions de production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn