web-dev-qa-db-fra.com

Module XMLHttpRequest non défini / trouvé

Ceci est mon code:

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
xhr.open("GET", "//URL")
xhr.setRequestHeader("Content-Type: application/json", "Authorization: Basic //AuthKey");
xhr.send();

Je reçois l'erreur:

Cannot find module 'xmlhttprequest'

Lorsque je supprime la première ligne, je reçois:

XMLHttpRequest is not defined

J'ai cherché partout et des gens ont mentionné un problème avec Node.js ici et là, mais mon installation de Node était correcte et je ne suis donc pas sûr du problème.

55
wmash

XMLHttpRequest est un objet intégré dans les navigateurs Web .

Il n'est pas distribué avec Node. vous devez l'installer séparément ,

  1. Installez-le avec npm,

    npm install xmlhttprequest
    
  2. Maintenant vous pouvez require le dans votre code.

    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var xhr = new XMLHttpRequest();
    

Cela dit, le module http est l'outil intégré permettant de créer des requêtes HTTP à partir d'un nœud.

Axios est une bibliothèque de création de requêtes HTTP disponible pour Node et pour les navigateurs, qui est très populaire de nos jours.

91
Quentin

Depuis la dernière mise à jour de module xmlhttprequest était autour de il y a 2 ans , dans certains cas, cela ne fonctionne pas comme prévu.

Au lieu de cela, vous pouvez utiliser le module xhr2 . En d'autres termes:

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();

devient:

var XMLHttpRequest = require('xhr2');
var xhr = new XMLHttpRequest();

Mais ... bien sûr, il existe des modules plus populaires tels que Axios , car, par exemple, utilise des promesses:

// Make a request for a user with a given ID
axios.get('/user?ID=12345').then(function (response) {
    console.log(response);
}).catch(function (error) {
    console.log(error);
});
10
robe007