res.download() not working in my case

Just to confirm what @robert said,

because this thing turned my head for two days, instead of using an ajax call, open a new window with your ajax request location, for example:

window.open("http://yourserver.com/api/link?a=3&b=4")

hope this helps someone.


Let Express set the correct headers and just do this:

res.get('/download', function(req, res) {
  res.download(__dirname + 'jsonFile.json', 'jsonFile.json');
});

(doc)

EDIT: since you're requesting /download through an AJAX call, you have to change your setup because most (all?) browsers will not show a download dialog in that case.

Instead, you can create a new window from your front end code to trigger the dialog:

window.open('/download?foo=bar&xxx=yyy');