【发布时间】:2022-10-04 21:07:48
【问题描述】:
我一直在尝试运行集成测试,但遇到以下错误:
2022-03-26T18:51:12.446Z cypress:network:agent got family { family: 4, href: 'https://wepapi.com/api/session-status' }
1) "before all" hook for "should login"
0 passing (345ms)
1 failing
1) Login
"before all" hook for "should login":
TypeError: crypto.createHmac is not a function
Because this error occurred during a `before all` hook we are skipping all of the remaining tests.
我们正在使用 Crypto 来生成 Auth Lambda 版本。
import Crypto from 'crypto';
import fs from 'fs';
export const getSha256FromFile = (filePath: string): string =>
Crypto
.createHash('sha256')
.update(fs.readFileSync(filePath))
.digest('hex')
在授权 Lambda 文件中:
const codeSha256 = getSha256FromFile(AUTH_LAMBDA_CODE_FILE);
this.version = authLambda.addVersion(
`AuthLambdaVersion_${codeSha256}`,
codeSha256
我什至没有使用 crypto.createHmac 函数。不知道发生了什么。
更新
我刚刚意识到我们正在使用AWS4 Sign functionality 来签署请求。有点像这样:
aws4.sign(requestOptions, {
secretAccessKey: "<your-secret-access-key>",
accessKeyId: "<your-access-key-id>",
sessionToken: "<your-session-token>"
})
并且签名功能使用加密功能。这会导致此错误。但我仍然不确定如何解决它
【问题讨论】:
标签: node.js typescript cryptography