Pour un projet top secret, je dois me servir de React Native afin de d’essayer de développer une application mobile multi-plateforme.
Sauf que coder tranquillement sans avoir une erreur qui n’arrive de nul part du jour au lendemain, avec le langage de programmation le plus incompris du monde (interpretez ça comme vous voulez), ça serait comme manger une biscotte sans Nutella.
Le problème
Imaginez vous utiliser votre robinet, comme d’habitude, puis que du jour au lendemain ce même robinet s’arrête de fonctionner sans que vous ayez fait quoi que ce soit pour que l’eau arrête de couler.
Imaginez ce même problème sur Expo, un des outils pour générer, tester et déployer une application React Native avec ce code d’erreur :
ENOSPC: System limit for number of file watchers reached...
Biensûr cette erreur n’apparaît pas dès votre premier lancement d’Expo mais après quelques semaines d’utilisation. Je ne sais pas pour vous, mais moi j’adore ce genre d’effet de suprise.
La solution
Il va falloir chercher un fichier qui se trouve ici :
/proc/sys/fs/inotify/max_user_watches
On le retrouve sur Mac et sur toutes les distributions Linux. Sur Windows ? J’en sais rien.
Si on fait un cat
sur ce fichier, vous pourrez constater qu’on trouve une valeur inférieur à 524288.
Si c’est le cas, il faut modifier le fichier qui se trouve ici : /etc/sysctl.conf
et remplacer la valeur de fs.inotify.max_user_watches
par 524288.
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
fs.inotify.max_user_watches=524288
Il suffit ensuite d’appliquer les changements avec cette commande :
sudo sysctl -p
Conclusion
Vive l’ecosystème JS !