Javascript XMLHttpRequest for file saver的折旧替代方案是什么?

Javascript XMLHttpRequest for file saver的折旧替代方案是什么?,javascript,reactjs,filesaver.js,Javascript,Reactjs,Filesaver.js,我正在使用react应用程序下载文件 var FileSaver = require('file-saver'); .. .. .. FileSaver.saveAs(files['file_path'], files['file_title']); 它工作得很好,但几天前它现在显示出一个错误 [Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请查看。 之所以出现这种情况,是因为FileSaver.js指出了它在何

我正在使用react应用程序下载文件

var FileSaver = require('file-saver');
..
..
..
FileSaver.saveAs(files['file_path'], files['file_title']);
它工作得很好,但几天前它现在显示出一个错误

[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请查看。

之所以出现这种情况,是因为FileSaver.js指出了它在何时使用该方法进行请求,而在您的情况下,之所以出现这种情况,是因为您正在从数据库中获取数据

注意:主线程上的同步请求很容易中断 对用户体验的影响,应避免;事实上,许多浏览器 在主线程上完全不推荐使用同步XHR支持。 中允许同步请求

如果我们查看源代码,我们将看到一条注释被设置为
false
,以避免弹出阻止程序:

功能已启用(url){
var xhr=newXMLHttpRequest()
//使用同步以避免弹出窗口阻止程序
xhr.open('HEAD',url,false)
...
}
关于此警告,还有一个尚未解决的问题,根本没有回应


我建议您忽略此警告消息,直到它被修复。您始终可以分叉repo并从
xhr.open
调用中删除该async
false
参数。

您可以通过从以下位置调用
saveAs
来消除警告:


您需要使用文件保护程序吗?您是从外部应用程序下载文件吗?是的,我是从S3下载的,但它仍然显示相同的错误,如果我在程序包文件中更改此项,当程序包更新时,还会再次出现问题。@hu7sy您更改为
xhr.open('HEAD',url,true)
,它仍然显示相同的错误?应用程序中的导入很可能获取一个已编译文件,而不是源文件。如果您不这样更改它,我在回答中指出,您必须分叉repo(进行更改并重新编译),然后使用分叉从
package.json
中获取包。
const FileSaver = require('file-saver');
..
..
..
new Promise(resolve => {
  resolve(FileSaver.saveAs(files['file_path'], files['file_title']));
})
.then(result => console.log("Done downloading") )
.catch(err => console.log("Error downloading: " + err));