为啥 JSZip 不能创建 blob 文件?
Posted
技术标签:
【中文标题】为啥 JSZip 不能创建 blob 文件?【英文标题】:Why JSZip can't create blob file?为什么 JSZip 不能创建 blob 文件? 【发布时间】:2019-10-28 05:59:39 【问题描述】:我在 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:错误:此平台不支持 blob
是否需要安装某些东西,或者我在 zip.file 中设置的数据应该是某种格式?
【问题讨论】:
Node.js can´t create Blobs?的可能重复 这个topic 在我的情况下似乎没有用,因为我不是在尝试创建 Blob,而是尝试从文件创建 ZIP。如果您能详细说明它对我的帮助:) 谢谢 在完全相同的问题上有一个github issue。它被错误地关闭了。 【参考方案1】:JSZip 在jszip/lib/utils.js:352:15
处抛出此错误,因为support.blob
的值由jszip/lib/support.js
定义(第11 到32 行)。我不知道您的机器,但是在尝试在 NodeJS 中运行此脚本时,我已对其进行调试,得出的结论是 JSZip 检测到不支持 blob,因为未定义 self
,因此 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);
【讨论】:
nodebuffer
是的!!以上是关于为啥 JSZip 不能创建 blob 文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥删除DOTA2国服安装目录下的“Package”文件夹,以及“ClientRegistry.blob”文件。还是进不去啊