如何在aws lambda中加载lib文件夹?

时间:2016-06-07 01:34:27

标签: node.js aws-lambda serverless-framework

在无服务器中,我有以下文件夹结构

/component_a/function_1/function_1.js
/component_a/lib/util.js

当我尝试使用

从function_1.js加载util.js时
u = require('../lib/util.js')

它适用于无服务器CLI“无服务器功能运行功能_1”。但是在lambda / api-gateway中找不到lib / util.js。

这是错误“错误:无法找到模块'.. / lib / util'”

我该如何解决?

1 个答案:

答案 0 :(得分:3)

这是如何解决的。在component_a / s-function.json中替换

"handler": "handler.handler",

"handler": "component_a/handler.handler",
function_1.js中的

调用util.js,如

u = require('../lib/util')
来自无服务器文档的

  

handler属性使您能够在您的。之间共享代码   功能。默认情况下,handler属性是handler.handler,即   意味着它只相对于函数文件夹,所以只有函数   文件夹将部署到Lambda。

     

但是,如果您想要包含函数的父子文件夹,那么   应该将处理程序更改为:   的 functionName / handler.handler   如您所见,处理程序的路径   现在包括函数文件夹,这意味着现在是路径   相对于父子文件夹,所以在这种情况下父子文件夹   将与您的功能一起部署。所以如果你有一个lib文件夹   在您的函数所需的父子文件夹中,它将是   部署了你的功能。

     

这也使您能够处理npm依赖关系   喜欢。如果父级中有package.json和node_modules   子文件夹,它将包含在已部署的lambda中。所以越多   您在处理程序路径中包含的父文件夹,您进入的位置越高   文件树。