今日は小ネタです。
Node.js で HMAC-sha256 を使うには crypto パッケージを使えば良いですが、node/types のバージョンが古いと以下のコードはコンパイルエラーとなります。
import crypto from 'crypt'
const hash = crypto.createHmac('sha256', process.env.SECRET).update(body).digest('base64')
createHmac の第2引数が問題なのですが、理由は2つあります。
- 第2引数は Buffer | KeyObject という型だが、古い定義では Buffer に string が含まれない。
- process.env.SECRET は string | undefined という型になるらしく、undefined が createHmac の定義に引っ掛かってしまう。
解決するには、node/types を最新版にアップデートした上で、以下のように書き直します。
import crypto from 'crypto'
const hash = crypto.createHmac('sha256', process.env.SECRET ?? '').update(body).digest('base64)
ここまで到達するのに半日使ってしまいました。
コメントを残す