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

Postman生成哈希报错TypeError: crypto.createHash is not a function

问题根因

你脚本报TypeError的核心原因有三个:

  • 你混用了Node.js原生crypto模块和crypto-js库的API:你写的createHash()链式调用update()、digest()是Node原生crypto的专属写法,crypto-js根本没有这些方法,调用自然报错
  • 你自己写的测试脚本里存在变量名错误:定义的邮箱变量是email,哈希拼接时误写为emailAddress,就算API写对了也会触发未定义错误
  • 你尝试的createHmac写法是用于生成带密钥的HMAC摘要,和原TS代码里的普通SHA256哈希逻辑完全不匹配,就算API调用正确,生成的结果也不符合预期。
正确Postman前置脚本

Postman沙箱环境默认内置了crypto-js,不需要额外手动引入,直接用全局CryptoJS对象即可,下面的代码和你给出的TS逻辑1:1对齐:

const createTestingUserHash = (emailAddress, timestamp, salt) => {
  const rawContent = `testinguserhash::${emailAddress}::${timestamp}::${salt}`;
  const sha256Hash = CryptoJS.SHA256(rawContent);
  // 输出base64格式摘要
  return sha256Hash.toString(CryptoJS.enc.Base64);
};

const getLoginHash = () => {
  // 对齐原TS逻辑,取当前ISO格式时间戳
  const currentTimeStamp = new Date().toISOString();
  // 替换为你实际使用的测试用户salt,建议存在Postman环境变量里统一管理
  const testingUserSalt = pm.environment.get("testingUserSalt") || "你的实际salt值";
  // 替换为实际测试账号邮箱,也可以从环境变量读取
  const testEmail = pm.environment.get("testUserEmail") || "testing@test.io";

  return createTestingUserHash(testEmail, currentTimeStamp, testingUserSalt);
};

const testingHash = getLoginHash();
console.log("生成的测试用户哈希值:", testingHash);
// 如果后续请求需要用到这个哈希,直接存到环境变量即可
pm.environment.set("testingUserHash", testingHash);
验证方法

如果需要确认哈希结果和原TS代码完全一致,可以把三个入参都换成固定值:

  • timestamp: 2022-06-23T14:51:34.694Z
  • salt: salt_value
  • email: testing@test.io
    两边生成的base64字符串完全相同,就说明逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:09