如何配置 Visual Studio Code 以解析 AWS Lambda 层的输入路径 (javascript)

Posted

技术标签:

【中文标题】如何配置 Visual Studio Code 以解析 AWS Lambda 层的输入路径 (javascript)【英文标题】:How configure Visual Studio Code to resolve input paths for AWS Lambda Layers (javascript) 【发布时间】:2020-03-01 18:21:01 【问题描述】:

我使用 VS Code 开发我的 AWS 托管无服务器应用程序。 该应用程序使用 Lambda。最近,我决定开始使用 Lambda 层来提取和重用通用代码。 我遇到的问题是 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/*"
    ]

require 语句不再显示为红色,并且允许一些基本的文本自动完成。但它并没有真正正确地显示带参数的图层导出函数。

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

可以做什么?

【问题讨论】:

可能对你有帮助:***.com/a/57553831/2692307 @LukasBach 感谢您的建议,但看起来它不会影响任何事情。我注意到,即使“jsconfig.json”文件中没有任何内容,它也会删除“require”上的错误......这里有一些魔力。但 Intellisense 仍然无法正常工作 【参考方案1】:

最后,位于 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"]

【讨论】:

对于尝试在 node_modules 上获取 IntelliSense 的人,请务必明确定义路径:"paths": "googleapis": ["../layers/nodejs/node_modules/googleapis"]

以上是关于如何配置 Visual Studio Code 以解析 AWS Lambda 层的输入路径 (javascript)的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code 个人配置备份

Visual Studio Code如何关闭代码智能提示?

Visual Studio Code 配置 Markdown

如何使用 Visual Studio Code 创建基本内容以在 localhost 上运行?

如何在 Visual Studio Code 中放置自定义输入以进行调试

如何评价Visual Studio Code