2017-07-06 86 views
0

我有一个zip文件,其中包含以下结构(这是归档的根,不是嵌套在顶级文件夹中,我知道它是错误的常见原因为AWS-S3-拉姆达部署):AWS Lambda包部署的函数require()的相对路径,找不到

- support/ 
    - shared.js 
- one.js 
- two.js 

,然后在one.js和two.js:

var shared = require("./support/shared"); 

// ... 

当我在本地运行这段代码,它的工作原理。我使用aws-sdk将zip文件上传到AWS-S3,然后使用aws.lambda.createFunction()创建一个具有该名称和处理程序以及所有内容的函数。创建的函数会显示在我的Lambda仪表板中,但是当我测试它时,我会得到"Cannot find module './support/shared'"。我也试过var shared = require("./support/shared.js");,并给出"Cannot find module './support/shared.js'"

这是运行时间node6.10。文件名大小写正确的区分大小写的lambda。

不应该这个工作?什么是窍门?

有没有一种方法可以验证Lambda正在处理的文件结构,以显示额外的./support/shared.js文件实际上是将它加到了工作目录还是它使用的任何文件?

回答

0

问题在于,在Windows上创建的zip文件在其解包时设置了错误的chmod权限。这些文件在那里,但无法访问,但节点只是提供一个关于找不到的通用警告,而不是文件夹访问被拒绝。