Comprendre l'erreur 137 : un problème de mémoire
Voici l'erreur que vous retrouvez probablement dans les logs de vos déploiements sur Netlify
1"build.command" failed
2────────────────────────────────────────────────────────────────
3
4 Error message
5 Command failed with exit code 137: npm run build (https://ntl.fyi/exit-code-137)
6
7 Error location
8 In build.command from netlify.toml:
9 npm run build
Avant tout, il est crucial de saisir la nature de cette bête. L'erreur 137 est, en réalité, le signe d'un manque de mémoire lors du processus de build. Netlify, dans sa grande sagesse, nous signale ainsi que notre site Next.js est un peu trop gourmand en ressources.
Les causes possibles : un site Next.js trop vorace en mémoire
Il est fort probable que votre site Next.js soit un tantinet trop vorace en mémoire pendant sa génération statique, et donc son déploiement sur Netlify. Une ou plusieurs pages de votre site pourraient être en train de charger une quantité pharaonique d'informations lors du build, certaines n'étaient probablement pas utiles pour la génération de ces pages.
Trois solutions pour éviter l'erreur 137
Face à ce problème, nous avons déterminé 3 solutions que vous pourriez envisager :
L'optimisation des données chargées lors de la génération du site
La configuration des CPUs alloués à Next.js lors du déploiement
La migration vers un autre PaaS
1. Optimiser la quantité de données nécessaires au build
Cette approche, bien que potentiellement chronophage, peut s'avérer bénéfique à long terme. Il s'agit de revoir la gestion des données, en réduisant au minimum la quantité de données qui sont nécessaires et chargées pour la génération des pages de votre site.
Par exemple, évitez de charger l'intégralité de votre blog pour n'en afficher qu'une partie sur la page listant vos dernières actualités. Aussi, vérifiez la gestion des données de traduction si votre site est multilingue : est-ce que seules les informations utiles à la génération d'une page lui sont fournies ?
Non seulement cela pourrait résoudre votre problème de déploiement, mais cela boostera également les performances de votre site pour vos visiteurs. D'une pierre deux coups !
2. Configurer le nombre de CPUs alloués à Next.js
Voici une autre solution, que nous avons découverte lors d'une mission pour l'un de nos clients. Elle est rapide à mettre en place et d'une efficacité redoutable. Il suffit de limiter le nombre de CPUs alloués à Next.js pendant son déploiement à 6
.
Pour ce faire, ajoutez cette option dans votre fichier next.config.js
:
1module.exports = {
2 // Votre configuration...
3 experimental: {
4 cpus: 6
5 }
6}
Pourquoi 6 ? C'est le nombre maximum de CPUs alloués pendant les déploiements en forfait standard sur Netlify.
3. Migrer vers une autre plateforme de déploiement
Si les deux premières solutions ne portent pas leurs fruits, il peut être judicieux d'envisager la migration vers une autre plateforme de déploiement, comme Vercel qui est plus généreuse en capacité de mémoire au cours des déploiements.
Notre expertise au service de votre projet
Cette erreur de déploiement ne devrait plus être un obstacle insurmontable pour vous. Vous devriez probablement trouver votre bonheure parmis ces trois solutions.
Si toutefois vous vous sentez dépassé, sachez que notre équipe d'experts est là pour vous épauler. Que ce soit pour résoudre des problèmes sur votre site Next.js, optimiser vos déploiements Netlify ou Vercel, ou même pour des évolutions plus ambitieuses, n'hésitez pas à faire appel à nos services.