Aws lambda 如何在Netlify lambda函数之间共享代码

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

我在各自的文件夹中有3个单独的函数。它们分别使用Twilio客户端和Apollo客户端处理SMS和GraphQL服务器

与其让所有代码在每个文件中实例化每个客户机(从env获取密钥等),还不如把它放在某个地方并需要放在其中

我尝试将代码放入顶层函数/文件夹中的.js文件中,并要求将其放入函数代码中,如下所示,这在
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')
在所有函数中重用模块。但是,在实时环境中出现相同的错误谢谢,我确信我尝试了类似的方法,但我会尝试并报告。我一直在使用一个包含预构建脚本的黑客解决方案,该脚本将共享代码复制到所有使用它的目录中!哦,也请分享一下!:)