Как настроить код Visual Studio для разрешения входных путей для лямбда-слоев AWS (JavaScript) - PullRequest
0 голосов
/ 05 ноября 2019

Я использую VS Code для разработки моего размещенного без сервера сервера AWS. Приложение использует Lambdas. Недавно я решил начать использовать Lambda Layers для извлечения и повторного использования общего кода. Проблема, с которой я столкнулся, заключается в том, что AWS Lambda ожидает следующий импорт слоя Lambda:

const layer = require("/opt/layer");

Я хотел бы получить Intellisense для экспортируемых функций слоя:

module.exports = {
    f1(param1, param2) {
        // ...
    },

    f2(paramX, paramY, paramZ) {
        // ...
    }
}

И несмотря на то, что у меня естьКак лямбда-код, так и лямбда-код слоя, VS Code, естественно, не может разрешить путь к файлу слоя, и поэтому Intellisense не работает.

Я обнаружил, что если я помещу следующий файл jsconfig.json где-нибудь в моемproject:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs"
    },
    "exclude": [
        "node_modules",
        "**/node_modules/*"
    ]
}

требует, чтобы операторы перестали отображаться красным, и допускается некоторое автозаполнение основного текста. Но на самом деле он не показывает правильно экспортированные функции слоя с параметрами.

Я бы не хотел создавать такие решения, как пользовательский импорт во время разработки, а затем заменять их на "require (" / opt / layer ")" во время развертывания. в AWS (или, по крайней мере, есть какая-то автоматическая вещь).

Что можно сделать?

1 Ответ

0 голосов
/ 08 ноября 2019

Наконец, следующий файл jsconfig.json, расположенный в папке lambda, работал для меня (также требуется перезапуск VS Code):

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es2015",
        "moduleResolution": "node",
        "baseUrl": ".",
        "paths": {
            "/opt/layer1": ["./layers/layer1"],
            "/opt/layer2": ["./layers/layer2"],
            "/opt/layer3": ["./layers/layer3"]
        }
    },
    "exclude": ["./layers/node_modules"]
}
...