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

在AWS Lambda中使用@aws-sdk/signature-v4时遇TypeError错误

TypeScript Lambda中@aws-sdk/signature-v4报"hashConstructor is not a constructor"的解决方法

错误现象

在TypeScript环境下开发AWS Lambda,使用@aws-sdk/signature-v4包时,部署后在Lambda控制台运行遇到以下错误:

{
  "errorType": "TypeError",
  "errorMessage": "hashConstructor is not a constructor",
  "trace": [
    "TypeError: hashConstructor is not a constructor",
    "    at getPayloadHash (/var/task/node_modules/@aws-sdk/signature-v4/dist-cjs/getPayloadHash.js:17:26)",
    "    at SignatureV4.signRequest (/var/task/node_modules/@aws-sdk/signature-v4/dist-cjs/SignatureV4.js:93:71)"
  ]
}

排查过程

  • 确认这是@aws-sdk/signature-v4的常见模块导入类问题
  • 尝试使用@aws-crypto/sha256-js作为哈希构造器解决方案,同时在tsconfig.json中设置了"esModuleInterop": true,但问题未解决
  • 初始采用的导入方式:
import * as crypto from "@aws-crypto/sha256-js";
const { Sha256 } = crypto;
  • 打印SignatureV4实例时,发现传入的Sha256为undefined,定位到是导入方式错误导致的问题

解决方案

修正@aws-crypto/sha256-js的导入方式即可解决问题:
有效导入方式:

import crypto from "@aws-crypto/sha256-js";
const { Sha256 } = crypto;

之后正常初始化SignatureV4实例即可:

const signer = new SignatureV4({
    credentials: defaultProvider(),
    region: AWS_REGION,
    service: "appsync",
    sha256: Sha256,
});

内容的提问来源于stack exchange,提问作者Gavin Coulson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42