Lambda会根据zip的创建方式抛出错误

时间:2017-01-06 18:29:51

标签: node.js lambda gulp

目前,我正在这样做:

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)"
  ]
}

如果我手动压缩并上传文件夹的内容(选择所有&gt;右键单击&gt; 7-zip&gt;添加到存档...),它将创建工作的存档与Lambda。

如果我手动上传gulp进程创建的archive.zip,Lambda将在执行代码时抛出错误。这让我相信错误是在gulp压缩过程中的某个地方。

如果我检查两个档案文件大小不同,但内容看起来一样乍看。

zip来自gulp-zip

1 个答案:

答案 0 :(得分:0)

https://github.com/sindresorhus/gulp-zip/issues/64

这是因为Windows和Linux之间存在权限问题。指定{nodir:true}

时,将gulp.src添加到选项中

我的代码变为:gulp.src('./**/*',{cwd:'./new_instance_setup',nodir:true})