Este es mi codigo:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
xhr.open("GET", "//URL")
xhr.setRequestHeader("Content-Type: application/json", "Authorization: Basic //AuthKey");
xhr.send();
Obtengo el error:
Cannot find module 'xmlhttprequest'
Cuando elimino la primera línea, obtengo:
XMLHttpRequest is not defined
He buscado por todas partes y la gente ha mencionado un problema con Node.js aquí y allá, pero mi instalación de Node fue correcta, así que no estoy seguro de cuál es el problema.
Dado que la última actualización del módulo xmlhttprequest fue hace aproximadamente 2 años , en algunos casos no funciona como se esperaba.
Entonces, en su lugar, puede usar el módulo xhr2 . En otras palabras:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; var xhr = new XMLHttpRequest();
se convierte en:
var XMLHttpRequest = require('xhr2'); var xhr = new XMLHttpRequest();
Pero ... claro, hay módulos más populares como Axios , porque -por ejemplo- usa promesas:
// 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); });
fuente
Con la biblioteca xhr2 puede sobrescribir globalmente
XMLHttpRequest
desde su código JS. Esto le permite usar bibliotecas externas en el nodo, que estaban destinadas a ejecutarse desde navegadores / supongamos que se ejecutan en un navegador.global.XMLHttpRequest = require('xhr2');
fuente