如何配置 Visual Studio 代码来解析 AWS Lambda 层的输入路径 (javascript)

How configure Visual Studio Code to resolve input paths for AWS Lambda Layers (javascript)

我使用 VS Code 开发我的 AWS 托管无服务器应用程序。 该应用程序使用 Lambdas。最近,我决定开始使用 Lambda Layers 来提取和重用公共代码。 我遇到的问题是 AWS Lambda 需要以下 Lambda 层导入:

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

我想在图层导出函数上获得 Intellisense:

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

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

尽管我同时拥有 lambda 和 lambda 层代码,但 VS Code 自然无法解析层文件的路径,因此 Intellisense 不起作用。

我发现如果我将下一个 jsconfig.json 文件放在项目中的任何位置:

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

要求语句停止以红色显示,并且允许一些基本的文本自动完成。但它并没有真正正确地显示带参数的层导出函数。

我不想创建解决方案,例如在开发期间使用自定义导入,然后在部署到 AWS 期间用 "require("/opt/layer")" 替换它们(或者至少有一些自动化的东西)。

可以做什么?

最后,位于 lambda 文件夹中的下一个 jsconfig.json 文件对我有用(还需要重新启动 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"]
}