Modul XMLHttpRequest tidak ditentukan / ditemukan


93

Ini kode saya:

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

Saya mendapatkan kesalahan:

Cannot find module 'xmlhttprequest'

Saat saya menghapus baris pertama, saya mendapatkan:

XMLHttpRequest is not defined

Saya telah mencari di mana-mana dan orang-orang telah menyebutkan masalah dengan Node.js di sana-sini tetapi instalasi Node saya benar jadi saya tidak yakin apa masalahnya.

Jawaban:


150

XMLHttpRequest adalah objek bawaan di browser web .

Itu tidak didistribusikan dengan Node; Anda harus menginstalnya secara terpisah ,

  1. Instal dengan npm,

    npm install xmlhttprequest
    
  2. Sekarang Anda dapat requiremelakukannya di kode Anda.

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

Meskipun demikian, modul http adalah alat bawaan untuk membuat permintaan HTTP dari Node.

Axios adalah library untuk membuat permintaan HTTP yang tersedia untuk Node dan browser yang sangat populer saat ini.


1
'xmlhttprequest' tidak berhasil untuk saya. Saya harus menggunakan 'xhr2' dari posting di bawah ini untuk membuat skrip saya berfungsi. Skrip kompatibel dengan Google Chrome terbaru - memuat respons sebagai ArrayBuffer: "xhr.responseType = 'arraybuffer';"
JerzySBG

21

Karena pembaruan terakhir modul xmlhttprequest adalah sekitar 2 tahun yang lalu , dalam beberapa kasus modul ini tidak berfungsi seperti yang diharapkan.

Jadi sebagai gantinya, Anda dapat menggunakan modul xhr2 . Dengan kata lain:

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

menjadi:

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

Tapi ... tentu saja, ada modul yang lebih populer seperti Axios , karena -misalnya- menggunakan promise:

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

2

Dengan pustaka xhr2 Anda dapat menimpa secara global XMLHttpRequestdari kode JS Anda. Ini memungkinkan Anda untuk menggunakan pustaka eksternal di node, yang dimaksudkan untuk dijalankan dari browser / anggap mereka dijalankan di browser.

global.XMLHttpRequest = require('xhr2');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.