2015-09-16 19 views
24

这是我的代码: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在这里和那里的问题,但我的节点安装是正确的,所以我不知道问题是什么。

+0

使用'http'代替 – Tushar

回答

33

XMLHttpRequest是网页浏览器中的一个内置对象。

它不与Node一起分发;您必须使用npminstall it separately

也就是说,Node自带the http module这是从Node发出HTTP请求的常用工具。

+0

这个工作。谢谢 – wmash

+0

使用** webpack -p --progress ** 创建dist并执行** npm run start **。我得到这个** ReferenceError:XMLHttpRequest未定义**虽然我没有在我的src文件夹中使用xmlhttprequest lib – tom

+0

@anoop - 如果您有新问题,请[提出新问题](http:// stackoverflow。 COM /问题/卖出)。链接到这一个,如果它有助于提供上下文。提供[mcve]。 – Quentin

0

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