当 运行 无服务器部署的简单 lambda 时找不到模块 'handler'
Cannot find module 'handler' when running simple lambda deployed by serverless
我正在尝试开始学习无服务器/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"
]
}
这通常意味着它找不到作为执行起点的方法。
例如在你的 serverless.yml 上你可以有这样的东西
functions:
getUsers:
handler: userFile.handler
这意味着需要在导出方法处理程序的 serverless.yml 的同一文件夹中有一个 userFile
。
module.exports.hello = async event => {
return {
statusCode: 200,
body: JSON.stringify(
{
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
},
null,
2
),
};
};
注意它不需要命名处理函数,只需要在serverless.yml
上定义相同的名称
我 运行 在本地使用 AWS sam 和 Webstorm 启动 lambda 时遇到同样的错误。
原来之前的 运行 没有正确停止并销毁 docker 容器 运行 lambda。停止并删除所述 docker 容器为我解决了问题。
我正在尝试开始学习无服务器/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"
]
}
这通常意味着它找不到作为执行起点的方法。
例如在你的 serverless.yml 上你可以有这样的东西
functions:
getUsers:
handler: userFile.handler
这意味着需要在导出方法处理程序的 serverless.yml 的同一文件夹中有一个 userFile
。
module.exports.hello = async event => {
return {
statusCode: 200,
body: JSON.stringify(
{
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
},
null,
2
),
};
};
注意它不需要命名处理函数,只需要在serverless.yml
上定义相同的名称我 运行 在本地使用 AWS sam 和 Webstorm 启动 lambda 时遇到同样的错误。
原来之前的 运行 没有正确停止并销毁 docker 容器 运行 lambda。停止并删除所述 docker 容器为我解决了问题。