XMLHttpRequest modülü tanımlanmadı / bulunamadı


93

Bu benim kodum:

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

Şu hatayı alıyorum:

Cannot find module 'xmlhttprequest'

İlk satırı kaldırdığımda şunu alıyorum:

XMLHttpRequest is not defined

Her yerde aradım ve insanlar burada ve orada Node.js ile ilgili bir sorundan bahsetti ancak Node kurulumum doğru olduğundan sorunun ne olduğundan emin değilim.

Yanıtlar:


150

XMLHttpRequest, web tarayıcılarında yerleşik bir nesnedir .

Düğüm ile dağıtılmaz; ayrı olarak kurmanız gerekir ,

  1. Npm ile kurun,

    npm install xmlhttprequest
    
  2. Şimdi bunu requirekodunuzda yapabilirsiniz.

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

Bununla birlikte , http modülü , Node'dan HTTP istekleri yapmak için yerleşik bir araçtır.

Axios , bugünlerde çok popüler olan Düğüm ve tarayıcılar için kullanılabilen HTTP isteklerini yapmak için bir kitaplıktır.


1
'xmlhttprequest' benim için çalışmadı. Senaryomun çalışması için aşağıdaki gönderiden 'xhr2' kullanmak zorunda kaldım. Komut dosyası en yeni Google Chrome ile uyumludur - yanıtı ArrayBuffer olarak yükler: "xhr.responseType = 'arraybuffer';"
JerzySBG

21

Xmlhttprequest modülünün son güncellemesi yaklaşık 2 yıl önce olduğundan, bazı durumlarda beklendiği gibi çalışmıyor.

Bunun yerine xhr2 modülünü kullanabilirsiniz . Diğer bir deyişle:

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

şu hale gelir:

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

Ama ... elbette, Axios gibi daha popüler modüller var , çünkü -örneğin- vaatleri kullanıyor:

// 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

Xhr2 kütüphanesi ile XMLHttpRequestJS kodunuzun üzerine global olarak yazabilirsiniz . Bu, tarayıcılardan çalıştırılması / bir tarayıcıda çalıştırıldıklarını varsayarak düğümde harici kitaplıkları kullanmanıza olanak tanır.

global.XMLHttpRequest = require('xhr2');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.