未定义/找到XMLHttpRequest模块

时间:2015-09-16 09:19:35

标签: javascript node.js 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安装是正确的,所以我不确定是什么问题。

4 个答案:

答案 0 :(得分:79)

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

它不与Node一起分发;你必须install it separately

  1. 使用npm,

    安装
    npm install xmlhttprequest
    
  2. 现在您可以在代码中require

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

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

答案 1 :(得分:9)

由于xmlhttprequest module的上次更新时间约为2 years ago,因此在某些情况下,它无法按预期运行。

相反,您可以使用xhr2 module。换句话说:

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 :(得分:0)

使用xhr2 library,您可以从JS代码全局覆盖Duplicate requires entry: javafx.fxml。这样,您便可以在节点中使用要从浏览器运行的外部库,也可以假定它们在浏览器中运行。

XMLHttpRequest

答案 3 :(得分:0)

只需通过以下代码进入终端安装xmlhttprequest

使用 npm 安装,

  1. npm install xmlhttprequest

  2. 现在您可以在代码中要求它。

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