【问题标题】:Serverless deployment to AWS Lambda missing modules?无服务器部署到 AWS Lambda 缺少模块?
【发布时间】:2020-10-08 13:16:23
【问题描述】:

第一次在这里处理无服务器。在遵循将现有快速应用程序迁移到无服务器的指南后,已使用无服务器部署成功部署。但是 aws lambda 一直抛出错误:

“errorType”:“Runtime.ImportModuleError”, “errorMessage”:“错误:找不到模块'serverless-http'\n需要堆栈:\n- /var/task/app.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index .js”,

所以我很困惑。我究竟做错了什么?转换现有快速应用程序的指南没有说我们需要创建一个 AWS Lambda 层,但是由于 Lambda 似乎找不到 serverless-http 模块,这是否意味着创建一个层是解决办法?

编辑:我的 .zip 文件似乎只是一个 express.js 文件。我不确定这是否不寻常,但在线阅读显示大多数人似乎也有一个 node_modules 文件夹压缩了?我认为 .zip 文件中缺少 node_module 文件夹导致此 runtime.ImportModuleError 失败?如果是这种情况,如何让无服务器添加 node_modules 文件夹?

【问题讨论】:

  • 如果您共享代码(简化版本)、serverless.yml 和目录结构,将会很有帮助。

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


【解决方案1】:

node_modules 文件夹通常与您的代码打包在一起——前提是它存在于您的目录中(是吗?)。

如果你的本地机器上没有安装 node_modules,那么你可以使用npm install 命令来创建它。此命令将安装 package-lock.json 文件(或 package.json)中列出的所有依赖项——抱歉,我不是节点人 :(.

但听起来你肯定没有上传你的 node_modules 文件夹,因为它不在你的本地机器上。你必须先初始化目录。

【讨论】:

  • 您不想将node_modules 文件夹上传到版本控制,因为这不是您的代码管理的责任。 package.json 文件应在构建过程中用于在 AWS 中进行部署以确定应部署哪些包。
猜你喜欢
  • 2021-02-27
  • 1970-01-01
  • 2020-06-27
  • 2020-06-07
  • 1970-01-01
  • 2017-01-03
  • 2021-08-08
  • 2018-08-09
  • 2020-02-17
相关资源
最近更新 更多