关于javascript:未定义/找到XMLHttpRequest模块

XMLHttpRequest module not defined/found

这是我的代码:

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

我收到错误消息:

1
Cannot find module 'xmlhttprequest'

当我删除第一行时,我得到:

1
XMLHttpRequest is not defined

我到处搜索,人们到处都提到了Node.js的问题,但是我的Node安装正确,所以我不确定是什么问题。


XMLHttpRequest是Web浏览器中的内置对象。

它不随Node一起分发; 您必须单独安装

  • 用npm安装它,

    1
    npm install xmlhttprequest
  • 现在,您可以在代码中require

    1
    2
    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var xhr = new XMLHttpRequest();
  • 也就是说,http模块是用于从Node发出HTTP请求的内置工具。

    Axios是一个用于发出HTTP请求的库,该库可用于当今非常流行的Node和浏览器。


    由于xmlhttprequest模块的上一次更新是在2年前,因此在某些情况下它无法按预期工作。

    因此,可以使用xhr2模块。 换一种说法:

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

    变成:

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

    但是...当然,还有更受欢迎的模块,例如Axios,因为-例如-使用promises:

    1
    2
    3
    4
    5
    6
    // 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);
    });