首页 > 解决方案 > 给出 mysql 错误的 Lambda 函数找不到模块 'mysql' 不是函数,即使将其包含在 zip 中也是如此

问题描述

我使用以下方法创建了一个 lambda 函数。

  1. 在我运行的一个新文件夹中

    npm init
    初始化一个新项目

  2. 然后我将我的代码添加到 index.js 并运行

    npm install mysql --save
    将 mysql 包保存到本地。

  3. 在此之后,我压缩了这个新文件夹的内容并将 zip 上传到 lambda 函数。

  4. 我在控制台中使用 test 运行测试并收到此错误。

    { "errorType": "Error", "errorMessage": "找不到模块 'mysql'\n需要堆栈:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- / var/runtime/index.js", "trace": [ "错误: 找不到模块 'mysql'", "需要堆栈:", "- /var/task/index.js", "- /var/runtime/ UserFunction.js", "- /var/runtime/index.js", "在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)", "在 Function.Module._load (internal /modules/cjs/loader.js:725:27)", "在 Module.require (internal/modules/cjs/loader.js:952:19)", "在 require (internal/modules/cjs/helpers.js :88:18)", "在 Runtime.exports.handler (/var/task/index.js:4:17)", " 在运行时。处理一次 (/var/runtime/Runtime.js:66:25)" ] }

标签: mysqlnode.jsamazon-web-servicesnpmaws-lambda

解决方案


似乎问题是上传的 zip 文件不包含mysql您安装的软件包,或者您的代码正在寻找依赖项的路径不正确。

您可以通过下载 zip 文件来验证这一点。

正如你没有提到你是如何部署所有这些资源的。

我建议使用任何框架,

  1. 无服务器框架
  2. AWS SAM

它负责打包您的依赖项,您可以放心地部署它们。

使用 AWS Lambda 在 NodeJS 中找不到 MySQL


推荐阅读