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

Why JSZip can't create blob file?

我正在尝试在 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 中设置的数据应该是某种格式?

JSZip 在 jszip/lib/utils.js:352:15 处抛出此错误,因为 support.blob 的值由 jszip/lib/support.js (lines 11 to 32). I don't know for your machine, but while trying to run this script in NodeJS, I've debugged it to the conclusion that JSZip detects blobs to be not supported because self is not defined, so line 23 定义,抛出错误并且 support.blob 设置为 false。

尽管 JSZip 似乎支持 Node 上的 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);