XMLHttpRequestモジュールが定義されていない/見つかりません


95

これは私のコードです:

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のインストールは正しかったので、問題が何であるかわかりません。

回答:


156

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

Nodeでは配布されません。別途インストールする必要があります、

  1. npmでインストールします。

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

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

とは言うものの、httpモジュールはノードからHTTPリクエストを行うための組み込みツールです。

Axiosは、HTTPリクエストを作成するためのライブラリであり、最近非常に人気のあるノードとブラウザで利用できます。


1
'xmlhttprequest'は私には機能しませんでした。スクリプトを機能させるには、以下の投稿の「xhr2」を使用する必要がありました。スクリプトは最新のGoogleChromeと互換性があります-応答をArrayBufferとしてロードします: "xhr.responseType = 'arraybuffer';"
JerzySBG 2018

21

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

したがって、代わりに、xhr2モジュールを使用できます。言い換えると:

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

になります:

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

しかし...もちろん、Axiosのようなより人気のあるモジュールがあります。これは、たとえば、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);
});

3

XHR2ライブラリあなたは、世界的に上書きすることができXMLHttpRequest、あなたのJSコードから。これにより、ノードで外部ライブラリを使用できます。これは、ブラウザから実行することを目的としており、ブラウザで実行されることを前提としています。

global.XMLHttpRequest = require('xhr2');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.