Failed to construct 'File': Iterator getter is not callable in chrome 60 when use JSON.stringify()

diEcho picture diEcho · Aug 4, 2017 · Viewed 31.3k times · Source

System Configuration : macOS Sierra 10.12.5 ; chrome 60;

I am trying to download JSON data ( response object ) as a json file but when I tried to achive this using browser File() object , it gives error

Failed to construct 'File': Iterator getter is not callable.

below is my code

//`inputData` is the valid response getting from $http.get
var stringifyData = JSON.stringify(inputData);
console.log("stringifyData ", stringifyData);
var file = new File(blob, "filename.json", {type: "text/json;charset=utf-8"});
console.log("file", file);

what is the issue and why I am getting this error. when I use JSON.stringify(inputData, undefined, 4); then it gives no error and displays proper object in the console.

Answer

Pavlo picture Pavlo · Aug 17, 2017

In your case File constructor signature is incorrect, the first argument must be:

An Array of ArrayBuffer, ArrayBufferView, Blob, or DOMString objects — or a mix of any such objects. This is the file content encoded as UTF-8.

https://developer.mozilla.org/en-US/docs/Web/API/File/File#Parameters

new File([blob], "filename.json", {type: "text/json;charset=utf-8"});