Как отладить AWS Lambda Node.js локально, используя серверный модуль? - PullRequest
0 голосов
/ 01 октября 2018

Я совершенно новичок в AWS и без сервера и т. Д. Чтобы ускорить разработку, мне нужна возможность локальной отладки приложения.

После этой статьи Запуск и отладка функций AWS Lambda локально Я пытался добиться именно этого.

В Visual Studio Code, когда я запускаю конфигурацию отладки, приложение мгновенно завершает работу без ошибок (в объявлении и инициализации переменной «content» устанавливается точка останова),Я не уверен, что у меня правильное имя функции.Я пытаюсь войти в основную функцию-обработчик, определенную в 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"
            ]
        }
    ]
}

Кроме того, я не уверен на 100% в определении «outfiles» в конфигурации.Я пришел к выводу, что это файл (ы), которые я пытаюсь отладить, однако, если это так, 'outfiles' не кажется мне подходящим именем.

Локальная среда, в которой я работаюэто Windows One.

1 Ответ

0 голосов
/ 01 октября 2018

После появления этого поста мне удалось заставить работать отладчик.Вот конфигурация, соответствующая моим потребностям:

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");

...