Node.js

MONGOERROR: SERVER AT 127.0.0.1:27017 REPORTS WIRE VERSION 0, BUT THIS VERSION OF NODE.JS DRIVER REQUIRES AT LEAST 2 (MONGODB2.6)

D

Dimanche 14 octobre 2018

Mis à jour le mardi 27 avril 2021

MongoError: Server at 127.0.0.1:27017 reports wire version 0, but this version of Node.js Driver requires at least 2 (MongoDB2.6)

Vous vous retrouvez avec l'erreur suivante :
MongoError: Server at 127.0.0.1:27017 reports wire version 0, but this version of Node.js Driver requires at least 2 (MongoDB2.6)

Alors je vais vous éviter plusieurs heures de recherches interminables !

Je vous installer Node.js et MongoDB sur mon Raspberry Pi 3 pour faire tourner une petite application. Côté Node.js, j'utilise le module Mongoose pour communiquer avec MongoDB. En l'installant tout bêtement avec npm install mongoose, j'ai donc utilisé la dernière version en date, la 5.3.x. Et là, tout beau tout frais, je lance mon application :
node index.js
Sauf qu'au moment où je me connecte à la base de données, je me retrouve avec l'erreur suivante :
MongoError: Server at 127.0.0.1:27017 reports wire version 0, but this version of Node.js Driver requires at least 2 (MongoDB2.6)
PAS DE PANIQUE ! Il suffit d'utiliser une version plus ancienne de Mongoose. Par exemple, moi j'ai pris la dernière version de la branche 4.x.x. L'erreur disparait et tout fonctionne à merveille :
npm install mongoose@4.4


Explications plus détaillées pour les curieux

En copiant/collant l'erreur sur Google :
MongoError: Server at 127.0.0.1:27017 reports wire version 0, but this version of Node.js Driver requires at least 2 (MongoDB2.6)
Aucune solution ne sortait, mis à part le fait que le Raspberry, ayant une architecture ARM, ne peut pas installer les dernières versions de MongoDB qui dorénavant supporte exclusivement les architectures 64 bits... Mais bon, ça ne nous mère pas très loin.
Étant perfectionniste, je voulais absolument utiliser la dernière version stable de MongoDB, soit la version 3.x au moment où j'ai fait les manipulations. J'ai remarqué qu'en installant MongoDB via sudo apt-get install mongodb sur le Raspberry, la commande installait MongoDB 2.4.
J'ai alors trouvé un tutoriel pour installer la version 3.2 de MongoDB sur le Raspberry en compilant les sources soit même : http://koenaerts.ca/compile-and-install-mongodb-on-raspberry-pi/ (attention à ceux qui se lancent dans cette opération, la compilation a duré 5-6h pour ma part)
Mais toujours cette fichu erreur...
Je me suis alors tourné vers Docker afin d'utiliser un container contenant déjà une version de Node.js et de MongoDB compatible... En vain...
Les idées commençaient à me manquer, et là, pourquoi pas regarder du côté de Mongoose... Et là...

Mongoose, à partir de sa version 5, ne supporte plus les versions antérieures à la 3.0.0 de MongoDB.
Je cite ses Changelog.md:
BREAKING CHANGE: use MongoDB driver 3.0.0, drop support for MongoDB server < 3.0.0 #5791 #4740
Source : https://github.com/Automattic/mongoose/blob/master/History.md#500-rc0--2017-12-28.
Il suffit donc de revenir à la version juste avant, soit la dernière de la branche 4.x.x pour retrouver le support des versions de MongoDB antérieures à 3.0.0.

Et voila tout, tout fonctionne correctement maintenant.

Autres sources


Une erreur ? une question ? une critique ? une faute ? un conseil ? ou tout simplement un merci ?

Lâche ton commentaire


raf Le mercredi 18 mars 2020 à 20:50:46
Merci pour cet article. Ca m'a permis de m'épargner de fastidieuses recherches !

Boloos91 Le vendredi 8 mai 2020 à 05:55:14
Bonjour,

J'ai eu ce message en installant mongodb sur une VM (vitualbox) auquel j'accédais d'une autre VM Linux.

C'était effectivement dû à un conflit de version.

Voir les sites suivant :
- https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum
- https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7

J'ai résolu le problème en installant la dernière version de mongodb et non celui par défaut du repo :

- création du fichier
" sudo vi /etc/yum.repos.d/mongodb-org.repo "
- ajout du code
" [mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc "
- puis n'installer que tous les liens " mongodb-org "

Marc N.

cigare Le lundi 19 octobre 2020 à 18:28:56
merci pour cet article, je suis repassé en mongoose 4.x.y et ça fonctionne :)