node.js - 如何使用无服务器模块在本地调试 AWS Lambda Node.js?
问题描述
我对 AWS 和无服务器等完全陌生。为了加快开发速度,我希望能够在本地调试我的应用程序。
按照这篇文章在本地运行和调试 AWS Lambda 函数,我试图实现这一点。
在 Visual Studio Code 中,当我运行调试配置时,应用程序会立即退出而不会出错(在“内容”变量的声明和初始化上设置了断点)。我不确定我的函数名是否正确。我正在尝试在“index.js”中定义的主“处理程序”函数中输入:
exports.handler = (event, context, callBack) =>
{
let bIsPostRequest = false, bIsPutRequest = false, bIsGetRequest = false, bIsDelRequest = false;
let content = "";
...
这是我的“launch.json”配置文件:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Debugger",
"program":
"${workspaceFolder}\\node_modules\\serverless\\bin\\serverless",
"args":[
"invoke",
"local",
"-f",
"index.handler", // function name
"--data",
"{}"
],
"outFiles": [
"${workspaceFolder}\\index.js"
]
}
]
}
另外,我对配置中“outfiles”的定义不是 100% 确定的。我得出的结论是我正在尝试调试的文件,但是如果是这种情况,“outfiles”对我来说似乎不是一个合适的名称。
我工作的本地环境是 Windows 环境。
解决方案
看到这篇文章后,我设法让调试器正常工作。这是满足我需求的配置:
const lambdaLocal = require('lambda-local');
var lambdaFunc = require("./index.js");
lambdaLocal.execute({
lambdaFunc: lambdaFunc,
lambdaHandler: "handler",
event: {
context: {
"resource-path": "/products",
"http-method": "GET"
},
"body-json": {
name : "ProductA"
}
}
}).then(function(done) {
console.log(done);
}).catch(function(err) {
console.log(err);
});
我在我的主工作目录中将此文件保存为“debugLocal.js”。launch.json 文件现在如下所示:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Debugger",
"program": "${workspaceFolder}\\debugLocal.js"
}
]
}
到目前为止,一切似乎都被很好地复制了。需要注意的一件事是包含的文件路径必须稍微更改,require("./js/inc/globalDefines.js");
即require("js/inc/globalDefines.js");
推荐阅读
- javascript - 我在@Component 中遇到主机问题
- entity-framework - 在 EF 核心中禁用跟踪返回跟踪错误
- c# - 无法解析符号“notnull”
- apache-spark - 调用 split() 函数时出现“split”的 Pyspark 错误不在列表中
- netcdf - 连接具有不同变量的 netcdf 文件 - 使用 nco
- vue.js - 嵌套样式在我的组件样式中不起作用
- java - JSON Schema 中使用 Jackson 注释的自定义属性关键字
- ios - iOS 13:带有 LeftView 间距问题的 UITextField - Xcode 11
- typescript - Typescript - 从另一种类型创建详尽的元组类型
- mongodb - 发生异常。MongoDartError (MongoDart Error: Invalid scheme in uri: mongodb+srv://) with flutter