Javascript Adm压缩文件作为目录

Javascript Adm压缩文件作为目录,javascript,node.js,zip,adm-zip,Javascript,Node.js,Zip,Adm Zip,我正在尝试使用Adm-zip将文件打包成zip文件 var AdmZip = require('adm-zip'); var pathToZip = 'build/release/Ext.zip'; var zip = new AdmZip(); zip.addLocalFile('background.js'); zip.addLocalFile('chrome_ex_oauth.html'); zip.addLocalFolder('images'); zip.writeZip(pa

我正在尝试使用Adm-zip将文件打包成zip文件

var AdmZip = require('adm-zip');

var pathToZip = 'build/release/Ext.zip';


var zip = new AdmZip();

zip.addLocalFile('background.js');
zip.addLocalFile('chrome_ex_oauth.html');
zip.addLocalFolder('images');
zip.writeZip(pathToZip);
但是,所有文件都作为文件夹添加到zip中,而实际内容没有压缩

下面是入门参考资料,这似乎是一个非常简单的示例,但没有按预期工作。我做错了什么?

来自adm zip的:

[void]addLocalFile(字符串localPath,字符串zipPath)

将文件从磁盘添加到存档

[void]addLocalFolder(字符串localPath,字符串zipPath)

将本地目录及其所有嵌套文件和目录添加到存档中

因为您似乎错过了第二个参数,即zipPath。

所以我做了一些挖掘:

addFile最终由addLocalFile调用,这似乎就是错误发生的地方,特别是在它检查ZipEntry是否是目录的地方。应用了错误的标志

为了解决这个问题,我最终手动调用addFile并自己指定属性,这样它就不会依赖于自动检测并错误地将文件标记为目录

addFile(filePathInArchive, fileBuffer, '', 0644 << 16);

addFile(filePathInArchive,fileBuffer,”,0644以这种方式添加到ZIP的大多数文件都已损坏。链接到Github上的问题:否,我可以确认OP声明。addLocalFile将文件添加为目录,带或不带第二个参数。我还注意到,addFile也会这样做,除非您在1.5年后使用0644,并且我也有同样的问题。。。
var zip = new admZip();
var fs=require('fs-extra');
zip.addFile('NGINX/app.js',fs.readFileSync('./app.js'),'',0644);
zip.writeZip("./files.zip");