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 |
现在,您可以在代码中
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); }); |