2015-09-16 9 views
24

Questo è il mio codice:modulo XMLHttpRequest non definito/trovato

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

sto ottenendo l'errore:

Cannot find module 'xmlhttprequest' 

Quando rimuovo la prima linea, sto ottenendo:

XMLHttpRequest is not defined 

Ho cercato dappertutto e la gente ha menzionato un problema con Node.js qua e là ma la mia installazione di Node era corretta, quindi non sono sicuro qual è il problema

+0

Usa 'http' invece – Tushar

risposta

33

XMLHttpRequest è un oggetto incorporato nei browser Web .

Non è distribuito con il nodo; devi install it separately utilizzando npm.

Detto questo, il nodo viene fornito con the http module, che è lo strumento normale per la scelta per effettuare richieste HTTP dal nodo.

+0

Questo ha funzionato. Grazie – wmash

+0

durante la creazione di una dist utilizzando ** webpack -p --progress ** e facendo ** npm start start **. Sto ottenendo questo ** ReferenceError: XMLHttpRequest non è definito ** anche se non sto usando xmlhttprequest lib all'interno della mia cartella src – tom

+0

@anoop - Se hai una nuova domanda, quindi [fai una nuova domanda] (http: // StackOverflow. com/domande/ask). Collegati a questo se aiuta a fornire il contesto. Fornire un [mcve]. – Quentin

0

Poiché l'ultimo aggiornamento di xmlhttprequest module era di circa 2 years ago, in alcuni casi non funziona come previsto.

Quindi, è possibile utilizzare lo xhr2 module. In altre parole:

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

diventa:

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

Ma ... naturalmente, ci sono i moduli più popolari come Axios, perché -per esempio- usa promesse:

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