Я через blob делал.
Так примерно
function download(filename, text) {
var element = document.createElement('a');
var blob = new Blob([text], {type: 'text/plain'});
element.href = window.URL.createObjectURL(blob)
element.download = filename;
element.style.display = 'none';
element.onclick = () => document.body.removeChild(element);
document.body.appendChild(element);
element.click();
}