javascript - 在Windows上卡住的node.js上提取zip文件

标签 javascript node.js

我正在使用this用于在我的应用程序中提取 zip 文件的 Node 模块。现在已经使用了一段时间了。我刚刚意识到 Windows 上有一些文件无法提取。在 OSX 和 Linux 上没有问题。

zip 中有很多文件和文件夹。提取几个文件后停止提取,并且停止时没有错误或输出。

问题不在于所有 zip,而仅在于其中几个。

我不是 Node 专家,所以我真的不知道如何调试这个问题。有什么方法可以检测流或管道是否失败?

var zip = 'myfile.zip';
var target = 'myfolder';
var zipper = app.fs.createReadStream(zip).pipe(app.unzip.Extract({ path: target }));

zipper.on('close', function(e){
    onSuccess();
});

zipper.on('error', function(e){
    console.log('Error extracting: ', e);
    onError(e);
});

我知道该模块不再被维护,但它多年来一直很好地完成工作,但欢迎我提出新的建议。

最佳答案

这个问题我终于解决了!感谢 9 年前在 php 手册上留下的评论 here .

问题在于 zip 中包含 \ 的目录。 Windows 不会提取包含斜杠的文件夹,即 myfolder\。 Unixy 系统将会。

关于javascript - 在Windows上卡住的node.js上提取zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51322008/

相关文章:

node.js - http-proxy-middleware + express + node.js - 无法重定向到启用客户端证书身份验证的端点

javascript - 获取css文件中的所有类名

node.js - 有没有办法在 nodejs pdfkit 中将一行中的文本片段加粗?

javascript - Sequelize 类型错误 : Cannot read property '1' of null

javascript - Facebook Javascript SDK 产生 SSL 错误

javascript - 使用 Javascript 编写一个比较两棵树的函数,如果它们在结构和值上相等则返回 true,否则返回 false

c# - 将参数作为字典对象传递给 JavaScript 函数

javascript - 如何将属性转换为 bool 值(深)

javascript - Backbone JS Model Fetch 在 Fiddler 中返回 200 但调用错误方法

javascript - jQuery 触发文档事件到 DIV 中