运行无服务器部署的简单 lambda 时找不到模块“处理程序”

zlZ*_*mon 13 aws-lambda serverless-framework

我正在尝试开始学习无服务器/ lambda,因此我创建了一个简单的 lambda 并使用无服务器部署它,效果很好。

然而,当我想测试 lampbda 的端点时,我得到了答案502。当我查看日志时,它告诉我它找不到没有handler任何意义的模块......

这是日志:

{
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'handler'\nRequire stack:\n- 
/var/runtime/UserFunction.js\n- /var/runtime/index.js",
 "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module 'handler'",
"Require stack:",
"- /var/runtime/UserFunction.js",
"- /var/runtime/index.js",
"    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
"    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
"    at Object.<anonymous> (/var/runtime/index.js:43:30)",
"    at Module._compile (internal/modules/cjs/loader.js:1158:30)",
"    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)",
"    at Module.load (internal/modules/cjs/loader.js:1002:32)",
"    at Function.Module._load (internal/modules/cjs/loader.js:901:14)",
"    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)",
"    at internal/main/run_main_module.js:18:47"
]
}
Run Code Online (Sandbox Code Playgroud)

deg*_*ege 7

这通常意味着它找不到作为执行起点的方法。

例如在你的 serverless.yml 上你可以有这样的东西

functions:
  getUsers:
    handler: userFile.handler
Run Code Online (Sandbox Code Playgroud)

这意味着需要userFile在 serverless.yml 的同一文件夹中包含导出的方法处理程序。

module.exports.hello = async event => {
  return {
    statusCode: 200,
    body: JSON.stringify(
      {
        message: 'Go Serverless v1.0! Your function executed successfully!',
        input: event,
      },
      null,
      2
    ),
  };
};
Run Code Online (Sandbox Code Playgroud)

注意,它不需要命名为处理函数,只需要与 serverless.yml 上定义的名称相同即可

  • 是的,这就是问题所在,“serverless.yml”不在同一文件夹中。谢谢! (2认同)