Developpez.com

Le Club des Développeurs et IT Pro

npm : un bogue avec le code d'erreur « 418 I'm a teapot » a affecté le registre

Empêchant l'utilisation du client npm derrière un proxy

Le 2018-05-29 20:15:38, par Bill Fassinou, Chroniqueur Actualités
Un utilisateur a signalé sur GitHub hier que NPM, le gestionnaire de paquet de Node.js était inutilisable pour lui à cause d'une erreur inhabituelle. Rapidement, de nombreuses autres personnes, partout dans le monde entier, ont signalé le même problème. Lorsqu'on tentait d'installer ou de mettre à jour des paquets, une erreur s'affichait : « ERR! 418 I'm a teapot ». Le bogue n'a affecté que ceux qui sont derrière un serveur proxy. Toutefois, un grand nombre de développeurs ont été touchés, la plupart des entreprises fonctionnant derrière des serveurs proxy.


La cause de cet incident serait que certains serveurs proxy ajoutent le port aux requêtes vers le registre de paquets NPM. Les requêtes sont donc sous la forme de registry.npmjs.org:443 au lieu de registry.npmjs.org. Le port supplémentaire ajouté à la requête était mal pris en charge par le registre qui répondait une erreur 418.

Le message d'erreur « ERR! 418 I'm a teapot » n'est pas un code erreur http standard.

Cela remonte à un poisson d'avril datant de 1998 quand un groupe de développeurs avait proposé le protocole Hyper Text Coffee Pot Control Protocol (HTCPCP) à l'IETF qui l'a spécifié au RFC 2324. Dans ce protocole, il est indiqué que « toute tentative de faire du café avec une théière devrait donner lieu au code d'erreur : 418 je suis une théière ». Ces dernières années, de nombreux développeurs utilisent ce code d'erreur amusant pour les bogues d'origine inconnue.

L'erreur d'interprétation par le registre a été rapidement corrigée, mais on peut légitimement se poser des questions sur sa cause. Qu'est-ce qui a bien pu subitement causer ce problème ? Difficile de répondre à cette question, car si le code du client npm est ouvert, celui du registre ne l'est pas. Aucune communication à propos du problème sur les canaux habituels, à savoir la page web de statut du registre, ou les comptes Twitter officiels de @npmstatus et @npm_support.

Sources : reporting de l'erreur, IETF

Et vous ?

Avez-vous aussi été affectés par cette erreur ?
Prenez-vous des mesures particulières pour ne pas être affecté par les problèmes de registre ou d'accès au registre ?

Voir aussi

npm 5.7.0 retiré de la circulation à peine deux jours après sa sortie, la version 5.7.1 publiée pour corriger un problème critique
npm 6.0.0, le gestionnaire de paquets officiel de Node.js. passe en @latest, et se concentre désormais sur la sécurité
npm : une porte dérobée a été découverte dans le paquet getcookies qui a des dépendances imbriquées avec le paquet populaire Mailparser
Un incident opérationnel a provoqué la disparition d'une centaine de paquets npm, l'équipe derrière le gestionnaire de paquets de Node.js s'explique
npm : la version 6.0.1 du gestionnaire de paquets officiel de Node.js. passe en @latest, la commande npm audit est désormais fonctionnelle
  Discussion forum
1 commentaire
  • Watilin
    Expert éminent
    C’est toujours la galère quand il y a des proxys dans l’affaire. Voir What is the most accurate way to retrieve a user’s correct IP address in PHP?
    Quant à l’erreur 418, c’est probablement un cas de figure que le/la dev a pris à la légère en se disant que ça n’arriverait jamais, et il/elle en a profité pour placer une blague que personne n’était censé découvrir