为什么 JSZip 无法创建 Blob 文件?

6
我会尝试在NodeJS上使用JSZip来创建一些ZIP文件,但是遇到了问题。
我正在使用JSZip提供的代码:
var JSZip = require('JSZip')
var zip = new JSZip()
zip.file("Hello.txt", "Hello World\n")
zip.generateAsync({type:"blob"}).then(function(content) {
    //do things here
});

目前代码在generateAsync函数处报错:

UnhandledPromiseRejectionWarning: Error: blob is not supported by this platform

是否需要安装某些软件或者设置的zip.file数据需要符合特定格式?


可能是Node.js无法创建Blob?的重复问题。 - zero298
1
这个主题在我的情况下似乎没有用,因为我不是在尝试创建Blob,而是在尝试从文件中创建ZIP。如果您能说明它如何帮助我:)谢谢 - Alex
有一个关于完全相同问题的GitHub问题。它被错误地关闭了。 - Nino Filiu
1个回答

13

JSZip因为support.blob的值而在jszip/lib/utils.js:352:15抛出错误,该值在jszip/lib/support.js(第11到32行)中定义。我不知道你的机器情况如何,但在尝试在NodeJS中运行此脚本时,我通过调试得出结论:JSZip检测到不支持blob,因为未定义self,所以第23行会抛出一个错误,并将support.blob设置为false。

然而,JSZip似乎支持Node Buffer类型——以下代码在我的机器上没有引发任何错误:

// JSZip v3.2.1
// NodeJS v8.10.0
// Ubuntu 18.04
const JSZip = require('jszip');

const zip = new JSZip();
zip.file('hello.txt', 'Hello world\n');
zip
    .generateAsync({type: 'nodebuffer'}) // blob -> nodebuffer
    .then(console.log);

nodebuffer 是的!! - zelusp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接