Nikolay
(Nikolay)
Janvier 23, 2020, 10:35
1
Bonjour, je ne peux pas développer sous Windows car j’obtiens un écran blanc. Lorsque j’ouvre la console, je reçois ces erreurs :
(X) ember_jquery.js?1579775136.5740232:1 Uncaught Error: Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/pr
(in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')
at ember_jquery.js?1579775136.5740232:1
et beaucoup d’erreurs similaires.
En résumé, Discourse ne peut pas charger les scripts. Lorsque j’ouvre un script dans une fenêtre séparée, je reçois l’erreur suivante :
Script: http://localhost:3000/assets/locales/en_US.js?1579775136.5398135
Body: throw Error("Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/x2\n (in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')")
J’ai donc commencé à investiguer et j’ai réalisé que le problème vient de Sprockets. J’ai monté le répertoire Discourse depuis Windows vers Docker, et le système de fichiers ne fait pas la distinction entre majuscules et minuscules. Or, Sprockets semble ne fonctionner que sur des systèmes de fichiers de type Linux (comme ext4) qui peuvent rendre les répertoires sensibles à la casse.
Existe-t-il une solution à ce problème ?
Merci
MISE À JOUR : ce problème avec Sprockets est documenté sur GitHub : FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
mais le problème est toujours ouvert et aucune solution n’est proposée
sam
(Sam Saffron)
Janvier 28, 2020, 6:36
2
Amusant : @pixeltrix est tombé là-dessus hier et a utilisé cette astuce pour contourner le problème :
committed 12:09PM - 27 Jan 20 UTC
Sprockets 3.0 and later uses Base64 digests for cache paths and these
present pr… oblems when used with NTFS on Windows which is case-insensitive.
By allowing the overriding of the cache path from an environment variable
we can use a Docker volume to cache the asset compilation. This is actually
faster on both Mac and Windows than the default path.
Je recommande simplement d’installer WSL2 et d’utiliser notre configuration WSL2, qui est bien plus rapide et plus facile à comprendre :
Ce tutoriel a été testé sur Windows 10 et 11.
Pour configurer un environnement de développement pour Discourse sur Windows, vous pouvez utiliser la fonctionnalité Windows Subsystem for Linux .
Cette configuration nécessite l’installation de WSL 2. Elle n’est disponible que sur les versions de Windows 10 18917 ou supérieures. Nous supposons que vous avez déjà installé Windows Subsystem for Linux 2 (Ubuntu) sur votre système Windows 10. ATTENTION : Installez Ubuntu 18.04, e…
L’installation de l’environnement de développement est triviale : il suffit de lancer WSL2, d’installer Docker, puis d’utiliser notre configuration de développement Docker.
Développer avec Docker
Puisque Discourse fonctionne dans Docker, vous devriez pouvoir exécuter Discourse directement depuis votre répertoire source en utilisant un conteneur de développement Discourse.
Avantages : Pas besoin d’installer de dépendances système, aucune configuration requise pour mettre en place rapidement un environnement de développement.
Inconvénients : Sera légèrement plus lent que l’environnement de développement natif sur Ubuntu, et beaucoup plus le…
Nikolay
(Nikolay)
Janvier 28, 2020, 10:10
3
Merci beaucoup. Le contournement a fonctionné.
Plus tard, j’essaierai d’utiliser WSL2.