programing

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

testmans 2023. 7. 24. 22:21
반응형

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가 정확해서 무슨 문제인지 잘 모르겠습니다.

XMLHttpRequest는 웹 브라우저의 기본 제공 개체입니다.

노드와 함께 배포되지 않습니다.http 모듈은 노드에서 HTTP 요청을 수행하기 위한 기본 제공 도구입니다.

노드에서 HTTP 요청을 하는 대부분의 사용자는 API가 더 친숙한 타사 라이브러리를 사용합니다.Axios(Node.js 및 브라우저 모두에서 사용)와 (브라우저에 내장된 XMLHttpRequest의 최신 대체물인 fetch API를 구현하는) 두 가지 일반적인 선택입니다.

2022년 업데이트:Node 18은 기본적으로 다음을 구현합니다.fetch 기본적으로 활성화됩니다.

Node.js에서 XHR을 사용하려면 몇 가지 타사 구현이 있습니다.xmlhttprequest (유지보수되지 않은 것으로 보임) 및 (이 답변에 추가했을 때 업데이트가 있었지만 그 이후로 개발자에 의해 포기된 것으로 보임).

  1. npm과 함께 설치합니다.

     npm install xhr2
    
  2. 이제 할 수 있습니다.require당신의 코드에 있습니다.

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

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

언급URL : https://stackoverflow.com/questions/32604460/xmlhttprequest-module-not-defined-found

반응형