Aws lambda 如何在Netlify lambda函数之间共享代码
我在各自的文件夹中有3个单独的函数。它们分别使用Twilio客户端和Apollo客户端处理SMS和GraphQL服务器 与其让所有代码在每个文件中实例化每个客户机(从env获取密钥等),还不如把它放在某个地方并需要放在其中 我尝试将代码放入顶层函数/文件夹中的.js文件中,并要求将其放入函数代码中,如下所示,这在Aws lambda 如何在Netlify lambda函数之间共享代码,aws-lambda,serverless,netlify,code-sharing,netlify-function,Aws Lambda,Serverless,Netlify,Code Sharing,Netlify Function,我在各自的文件夹中有3个单独的函数。它们分别使用Twilio客户端和Apollo客户端处理SMS和GraphQL服务器 与其让所有代码在每个文件中实例化每个客户机(从env获取密钥等),还不如把它放在某个地方并需要放在其中 我尝试将代码放入顶层函数/文件夹中的.js文件中,并要求将其放入函数代码中,如下所示,这在netlify dev本地运行良好,但在live环境中调用函数时,Module not found'../twilioClient'出现错误 /functions apolloCli
netlify dev
本地运行良好,但在live环境中调用函数时,Module not found'../twilioClient'
出现错误
/functions
apolloClient.js
twilioClient.js
package.json - specifying deps used by above files
/auth
auth.js - require('../apolloClient')
...
/trails
trails.js - require('../twilioClient') etc.
...
在将共享模块放入本地npm包中时,我确实取得了一些成功(本地和现场):
/functions
/utils
package.json
index.js
/src
/auth
auth.js
/trails
trails.js
package.json
导出functions/utils/index.js中的所有通用模块,并在functions/utils/package.json中设置属性“main”:“index.js”
在functions/package.json
中安装模块:
{
"dependencies": {
...
"utils": "file:utils"
}
}
并将其导入到函数中(在functions/src/auth/auth.js
):import{apolloClient,twilioClient}from“utils”
请查看以供参考。在我有机会尝试@nomadoda的答案之前,发布我的临时解决方案,以防它有所帮助
我的函数文件夹如下所示
/functions
/utils
apolloClient.js
twilioClient.js
/receive-sms
/auth
/stripe
/scripts
其中auth、scripts、receive sms和stripe是我的lambda函数
我在我的根package.json
中有“prebuild”:“sh scripts/prebuild.sh”
,如下所示:
cp -rf functions/utils functions/receive-sms
cp -rf functions/utils functions/auth
cp -rf functions/utils functions/scripts
cp -rf functions/utils functions/stripe
这也是我将cd放入每个lambda函数文件夹并运行warn
来安装它们的依赖项的地方
然后,在我的函数文件夹中,我可以通过从本地/utils
文件夹导入来使用utils代码,即const apolloClient=require('./utils/apolloClient')代码>
我还忽略了复制的/utils
文件夹,因此git只跟踪utils的主版本
正如我所说的,这不太理想,但确实有效,尽管我希望上面的答案对我有效。刚刚尝试将js文件打包,方法是将它们移动到自己的目录和npm init
中,然后将它们列在顶级包中。json依赖项如“apollo客户端”:“文件:./apollo客户端”
。同样,这在本地工作,我可以使用const apollo client=require('apollo-client')
在所有函数中重用模块。但是,在实时环境中出现相同的错误谢谢,我确信我尝试了类似的方法,但我会尝试并报告。我一直在使用一个包含预构建脚本的黑客解决方案,该脚本将共享代码复制到所有使用它的目录中!哦,也请分享一下!:)