This is my code:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
xhr.open("GET", "//URL")
xhr.setRequestHeader("Content-Type: application/json", "Authorization: Basic //AuthKey");
xhr.send();
I am getting the error:
Cannot find module 'xmlhttprequest'
When I remove the first line, I am getting:
XMLHttpRequest is not defined
I have searched all over and people have mentioned a problem with Node.js here and there but my installation of Node was correct so I'm not sure what the issue is.
XMLHttpRequest is a built-in object in web browsers.
It is not distributed with Node. The http module is the built-in tool for making HTTP requests from Node.
Most people making HTTP requests from node use a third party library with a friendlier API. Two popular choices are Axios (for use both in Node.js and browsers) and node-fetch
(which implements the fetch API which is built into browsers and is a modern replacement for XMLHttpRequest.
2022 update: Node 18 has a native implementation of fetch
enabled by default.
If you really want to use XHR in Node.js then there are a couple of third party implementations. xmlhttprequest
(which seems to be unmaintained) and xhr2
(which had an update when I added it to this answer but seems to have been abandoned by the developer since).
Install it with npm,
npm install xhr2
Now you can require
it in your code.
var XMLHttpRequest = require('xhr2');
var xhr = new XMLHttpRequest();