目前,我正在这样做:
gulp.task('newInstanceSetup', function() {
return gulp.src('./**/*',{cwd:'./new_instance_setup'})
.pipe(zip('archive.zip'))
.pipe(lambda(newInstanceSetup_params, opts))
.pipe(gulp.dest('.'));
});
这会导致代码由 AWS Lambda 执行时出错。
{
"errorMessage": "Cannot find module 'async'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:276:25)",
"Module.require (module.js:353:17)",
"require (internal/module.js:12:17)",
"Object.<anonymous> (/var/task/index.js:5:9)",
"Module._compile (module.js:409:26)",
"Object.Module._extensions..js (module.js:416:10)",
"Module.load (module.js:343:32)",
"Function.Module._load (module.js:300:12)",
"Module.require (module.js:353:17)"
]
}
如果我手动压缩并上传文件夹的内容(选择所有>右键单击> 7-zip>添加到存档...),它将创建一个适用于 Lambda 的存档。
如果我手动上传 gulp 进程创建的archive.zip
,Lambda 将在执行代码时抛出错误。这让我相信错误出在大口大口的压缩过程中的某个地方。
如果我检查两个档案,文件大小不同,但内容乍一看是一样的。
zip
来自大口大口的拉链
https://github.com/sindresorhus/gulp-zip/issues/64
发生这种情况是因为Windows和Linux之间的权限问题。在指定选项时向选项添加{nodir:true}
gulp.src
我的代码变为:gulp.src('./**/*',{cwd:'./new_instance_setup',nodir:true})