XMLHttpRequest 모듈이 정의되지 않음 / 찾음


93

이것은 내 코드입니다.

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의 설치가 정확했기 때문에 문제가 무엇인지 잘 모르겠습니다.

답변:


150

XMLHttpRequest는 웹 브라우저 에 내장 된 객체입니다 .

Node와 함께 배포되지 않습니다. 당신은 할 필요가 별도로 설치 ,

  1. npm으로 설치하십시오.

    npm install xmlhttprequest
    
  2. 이제 require코드에서 할 수 있습니다 .

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

즉, http 모듈 은 Node.js에서 HTTP 요청을 만들기위한 내장 도구입니다.

Axios 는 요즘 매우 인기있는 Node와 브라우저에서 사용할 수있는 HTTP 요청을위한 라이브러리입니다.


1
'xmlhttprequest'가 작동하지 않았습니다. 스크립트가 작동하도록하려면 아래 게시물의 'xhr2'를 사용해야했습니다. 스크립트는 최신 Google 크롬과 호환됩니다. 응답을 ArrayBuffer로로드합니다. "xhr.responseType = 'arraybuffer';"
JerzySBG

21

xmlhttprequest 모듈 의 마지막 업데이트 가 약 2 년 전 이었으므로 어떤 경우에는 예상대로 작동하지 않습니다.

따라서 대신 xhr2 모듈을 사용할 수 있습니다 . 다시 말해:

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

2

xhr2 라이브러리 를 사용하면 XMLHttpRequestJS 코드에서 전역 적으로 덮어 쓸 수 있습니다 . 이를 통해 브라우저에서 실행되도록 의도 된 노드에서 외부 라이브러리를 사용할 수 있습니다.

global.XMLHttpRequest = require('xhr2');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.