2015-09-16 15 views
24

Dies ist mein Code:XMLHttpRequest-Modul nicht definiert/gefunden

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

Ich erhalte die Fehlermeldung:

Cannot find module 'xmlhttprequest' 

Wenn ich die erste Zeile entfernen, erhalte ich:

XMLHttpRequest is not defined 

Ich habe überall gesucht und Leute haben ein Problem mit Node.js hier und dort erwähnt, aber meine Installation von Node war richtig, also bin ich mir nicht sicher Was ist das Problem?

+0

Verwenden 'http' statt – Tushar

Antwort

33

XMLHttpRequest ist ein integriertes Objekt in Webbrowser.

Es ist nicht mit Node verteilt; Sie müssen install it separately mit npm.

Das heißt, Node kommt mit the http module das ist das normale Werkzeug für die Wahl von HTTP-Anfragen von Node.

+0

Das hat funktioniert. Danke – wmash

+0

beim Erstellen eines Dist mit ** webpack -p --progress ** und tun ** npm run start **. Ich bekomme das ** ReferenceError: XMLHttpRequest ist nicht definiert **, obwohl ich nicht xmlhttprequest lib in meinem src-Ordner verwenden – tom

+0

@anoop - Wenn Sie eine neue Frage haben, dann [eine neue Frage stellen] (http: // stackoverflow. com/fragen/fragen). Link zu diesem, wenn es hilft, Kontext bereitzustellen. Stellen Sie eine [mcve] bereit. – Quentin

0

Da das letzte Update der xmlhttprequest module um 2 years ago war, funktioniert es in einigen Fällen nicht wie erwartet.

Stattdessen können Sie stattdessen die xhr2 module verwenden. Mit anderen Worten:

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

wird:

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

Aber ... natürlich gibt es immer beliebter Module wie Axios, weil -für Beispiel- verwendet Versprechen:

// 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); 
});