node.js - Lambda 根据 zip 的创建方式抛出错误

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

如果我手动压缩并上传文件夹的内容(全选 > 右键单击​​ > 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/

相关文章:

vb.net - 如何在 vb.net 中使用 lambda 删除列表的指定项目

javascript - 作为交互式提示运行 gulp

node.js - Vueify 无法与 ES2015 配合使用 - Gulp

node.js - node js mongodb数据库连接报错连接服务器失败

c++ - 按类型实例化 C++ lambda

node.js - Socket.IO 连接未建立

Python按特定列对多维字典进行排序

javascript - 如何在 gulp 的嵌套目录中 bundle 多个文件?

javascript - XMLHttpRequest 不适用于 react native 应用程序

python - 在 Node Express 应用程序中从 python-shell 向浏览器发送消息