在无服务器中,我有以下文件夹结构
/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'”
我该如何解决?
答案 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中。所以越多 您在处理程序路径中包含的父文件夹,您进入的位置越高 文件树。