web-dev-qa-db-ja.com

XMLHttpRequestモジュールが定義されていない/見つからない

これは私のコードです:

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

エラーが発生しています:

Cannot find module 'xmlhttprequest'

最初の行を削除すると、次のようになります:

XMLHttpRequest is not defined

私はあちこち検索して、人々はNode.jsの問題をあちこちで言及しましたが、Nodeのインストールは正しかったので、問題が何なのかわかりません。

55
wmash

XMLHttpRequestは、Webブラウザーの組み込みオブジェクトです。

Nodeと一緒には配布されません。 個別にインストールする

  1. Npmでインストールし、

    npm install xmlhttprequest
    
  2. これで、コードでrequireできます。

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

つまり、 httpモジュール はNodeからHTTPリクエストを行うための組み込みツールです。

Axios はNodeおよび最近非常に人気のあるブラウザーで使用可能なHTTP要求を作成するためのライブラリです。

91
Quentin

xmlhttprequestモジュール の最後の更新は 2年前 だったので、場合によっては、期待どおりに機能しません。

その代わりに、 xhr2 module を使用できます。言い換えると:

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

になる:

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

しかし... ...もちろん、 Axios のようなより一般的なモジュールがあります。

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