从 AWS Lambda 层导入依赖项时找不到模块 'jsonwebtoken' 错误
Cannot find module 'jsonwebtoken' error when importing dependency from AWS Lambda Layer
美好的一天!我正在测试一个 AWS Lambda 函数,该函数使用 AWS Lambda 层和以下目录:
LambdaLayer.zip
nodejs/
package.json
package-lock.json
node_modules/
jsonwebtoken/
在我的 Lambda 函数中(运行 在节点 14.x 运行时),我从这样的层导入模块:
const jwt = require('jsonwebtoken');
但是,我收到以下错误:
ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'jsonwebtoken'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js","stack":["Runtime.ImportModuleError: Error: Cannot find module 'jsonwebtoken'","Require stack:","- /var/task/index.js","- /var/runtime/UserFunction.js","- /var/runtime/index.js","
我已经遵循了 AWS 文档中的目录结构,也如此处所述:。尽管如此,我还是收到了这个错误。
我也尝试了下面的目录结构,但还是不行:
LambdaLayer.zip
nodejs/
node14/
node_modules/
jsonwebtoken/
我是不是漏掉了什么?
P.S。我使用 zip -r LambdaLayer.zip LambdaLayer/ 压缩了目录,并通过 AWS 控制台手动将其上传到 Lambda 层。
我已经找到了问题的根本原因。我实际做的是将 LambdaLayer 文件夹压缩为顶级目录而不是 nodejs。
我以为我在做什么:
LambdaLayer.zip
nodejs/
node_modules/
jsonwebtoken/
我实际上在做什么:
LambdaLayer.zip
LambdaLayer/
nodejs/
node_modules/
jsonwebtoken/
这就是函数找不到模块的原因。在压缩 nodejs 文件夹而不是 LambdaLayer 后,它现在可以工作了。
美好的一天!我正在测试一个 AWS Lambda 函数,该函数使用 AWS Lambda 层和以下目录:
LambdaLayer.zip
nodejs/
package.json
package-lock.json
node_modules/
jsonwebtoken/
在我的 Lambda 函数中(运行 在节点 14.x 运行时),我从这样的层导入模块:
const jwt = require('jsonwebtoken');
但是,我收到以下错误:
ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'jsonwebtoken'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js","stack":["Runtime.ImportModuleError: Error: Cannot find module 'jsonwebtoken'","Require stack:","- /var/task/index.js","- /var/runtime/UserFunction.js","- /var/runtime/index.js","
我已经遵循了 AWS 文档中的目录结构,也如此处所述:
我也尝试了下面的目录结构,但还是不行:
LambdaLayer.zip
nodejs/
node14/
node_modules/
jsonwebtoken/
我是不是漏掉了什么?
P.S。我使用 zip -r LambdaLayer.zip LambdaLayer/ 压缩了目录,并通过 AWS 控制台手动将其上传到 Lambda 层。
我已经找到了问题的根本原因。我实际做的是将 LambdaLayer 文件夹压缩为顶级目录而不是 nodejs。
我以为我在做什么:
LambdaLayer.zip
nodejs/
node_modules/
jsonwebtoken/
我实际上在做什么:
LambdaLayer.zip
LambdaLayer/
nodejs/
node_modules/
jsonwebtoken/
这就是函数找不到模块的原因。在压缩 nodejs 文件夹而不是 LambdaLayer 后,它现在可以工作了。