You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code调试TypeScript版AWS Lambda时指定自定义tsconfig.json的方法

SAM构建TypeScript Lambda时读取自定义tsconfig配置的解决方法

问题核心原因

SAM CLI本地构建、调试TypeScript编写的Lambda函数时,默认会使用内置的固定tsconfig配置执行编译,不会自动读取项目根目录下的自定义tsconfig.json,即使项目中配置了esModuleInterop: true也不会生效,最终出现默认导出不存在的运行时错误。
SAM内置的默认编译配置如下:

{
"compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "typeRoots": [
        "node_modules/@types"
    ],
    "types": [
        "node"
    ],
    "rootDir": ".",
    "inlineSourceMap": true
}
}

可用解决方式

  • 方式一:在SAM模板中显式指定tsconfig路径
    打开项目根目录下的template.yaml,找到对应Lambda函数的配置块,在Metadata段添加构建属性,明确指定自定义tsconfig的文件路径:
    Resources:
      # 替换为你的Lambda函数逻辑ID
      TypeScriptLambda:
        Type: AWS::Serverless::Function
        Properties:
          Handler: index.handler
          Runtime: nodejs18.x
          CodeUri: src/
        Metadata:
          BuildMethod: esbuild
          BuildProperties:
            # 填写项目中tsconfig.json的相对路径
            Tsconfig: ./tsconfig.json
    
    配置后SAM执行构建时会直接读取该路径下的配置,完全覆盖内置默认规则。
  • 方式二:构建命令追加参数指定配置
    手动执行sam build时,追加--tsconfig参数指定配置文件路径即可:
    # 清空缓存后重新构建
    rm -rf .aws-sam
    sam build --tsconfig ./tsconfig.json
    
    如果是通过VS Code的AWS Toolkit插件启动调试,打开项目.vscode/launch.json中对应的SAM调试配置,在sam.buildArguments字段中加入该参数:
    {
      "type": "aws-sam",
      "request": "direct-invoke",
      "name": "本地调试TypeScript Lambda",
      "invokeTarget": {
        "target": "code",
        "projectRoot": "${workspaceFolder}/src",
        "lambdaHandler": "index.handler"
      },
      "lambda": {
        "runtime": "nodejs18.x"
      },
      "sam": {
        "buildArguments": ["--tsconfig", "${workspaceFolder}/tsconfig.json"]
      }
    }
    
  • 方式三:直接传递单个编译器选项
    如果不需要全量引用自定义tsconfig,仅需要开启esModuleInterop这类个别配置,可以直接向底层构建工具传递编译参数,无需额外调整配置文件:
    Metadata:
      BuildMethod: esbuild
      BuildProperties:
        EsbuildArgs:
          - --tsconfig-raw={"compilerOptions":{"esModuleInterop":true}}
    

注意:所有配置修改完成后,必须先删除项目根目录下的.aws-sam缓存文件夹,再重新执行构建或启动调试,否则旧的构建缓存会导致新配置不生效。

内容的提问来源于stack exchange,提问作者Isac Casapu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:09:34