javascript - 在 node.js 上提取 zip 文件卡在 Windows 上
问题描述
我正在使用此节点模块在我的应用程序中提取 zip 文件。已经使用了一段时间了。我刚刚意识到在 Windows 上无法提取的文件很少。在 OSX 和 Linux 上没有问题。
压缩包中有很多文件和文件夹。在提取了几个文件后,提取停止并且它停止并且没有错误或输出。
问题不在于所有的拉链,而只是其中的几个。
我不是节点专家,所以我真的不知道如何调试这个问题。有什么方法可以检测流或管道是否失败?
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 手册上留下的评论。
问题在于 zip 中的目录包含\
. Windows 不会提取包含斜杠的文件夹,即myfolder\
. Unixy系统会。
推荐阅读
- git - git:除非文件更改,否则忽略文件
- html - 为什么我最小化屏幕时图像没有改变大小?
- oracle - Oracle AQ 传播 - 与接收者合作的秘诀
- react-native - 如何在本机反应中与 Android 共享 url
- react-native - 我在 ExpoKit 下的 RNGestureHandler.h 文件中生成了构建错误。未知类型名称“RNGestureHandlerState”
- kotlin - Kotlin 中的 maxByOrNull 函数
- python - 在 python 中使用 4 阶 Runge Kutta 求解 3 个耦合非线性微分方程
- reactive-programming - 具有反应性扩展的阈值检测
- python - Tox 使用了错误的解释器
- firebase - 在 Android 的 Firebase 存储中按创建时间对项目进行排序