이것은 내 코드입니다.
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의 설치가 정확했기 때문에 문제가 무엇인지 잘 모르겠습니다.
답변
XMLHttpRequest는 웹 브라우저 에 내장 된 객체입니다 .
Node와 함께 배포되지 않습니다. 당신은 할 필요가 별도로 설치 ,
-
npm으로 설치하십시오.
npm install xmlhttprequest
-
이제
require
코드에서 할 수 있습니다 .var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; var xhr = new XMLHttpRequest();
즉, http 모듈 은 Node.js에서 HTTP 요청을 만들기위한 내장 도구입니다.
Axios 는 요즘 매우 인기있는 Node와 브라우저에서 사용할 수있는 HTTP 요청을위한 라이브러리입니다.
답변
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);
});
답변
xhr2 라이브러리 를 사용하면 XMLHttpRequest
JS 코드에서 전역 적으로 덮어 쓸 수 있습니다 . 이를 통해 브라우저에서 실행되도록 의도 된 노드에서 외부 라이브러리를 사용할 수 있습니다.
global.XMLHttpRequest = require('xhr2');