目前,我正在这样做:
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 在执行代码时会抛出错误。这让我相信错误出现在 gulp 压缩过程中的某个地方。
如果我检查两个文件,文件大小不同,但内容乍一看是相同的。
zip
来自gulp-zip
最佳答案
https://github.com/sindresorhus/gulp-zip/issues/64
出现这种情况是因为 Windows 和 Linux 之间的权限问题。当您指定 gulp.src
{nodir:true}
添加到选项中
我的代码变为:gulp.src('./**/*',{cwd:'./new_instance_setup',nodir:true})
关于node.js - Lambda 根据 zip 的创建方式抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512034/