1

AWS Lambda 需要一个 zip 文件,该文件在解压缩时会生成一个文件。

但是,每个 node.js zip 库都会生成一个包含基本文件夹的 zip 文件,其中包含 Lambda 需要的文件,这会破坏 Lambda,从而导致'Cannot find module'错误。

例如,如果我在文件夹中有一个index.js文件和一个node_modules目录dist,当我使用 gulp-zip 时,我会在解压缩 zip 文件时得到一个添加的根文件夹......

gulp.src(['./dist/**/*'])
        .pipe(zip('dist.zip'))
        .pipe(gulp.dest('./'))

// When unzipped, this results in a "dist" folder containing index.js and node_modules

我已经尝试了 6 个节点 zip 库,但没有一个有简单的方法来排除基本目录。

有什么想法吗?

4

1 回答 1

1

我使用了“node-archiver”,它可以将目录压缩到目标目录(我只是将其设置为空字符串)。

https://github.com/archiverjs/node-archiver#directorydirpath-destpath-data

var archiver = require('archiver');
archive = archive.directory('./directoryToZip/', '' ); //option 2 is the dest
archive.pipe(  outZip);
archive.finalize();
于 2015-07-22T17:27:56.683 回答