SolanaのAnchorでTypeScriptを書いていた時に発生したエラー。
Agenda
現象
VSCodeで「let n = new BN(1)」の箇所で以下のエラーが発生する。
Cannot find name 'BN'.ts
念のため、「anchor test」も実行したが以下のエラー。
ReferenceError: BN is not defined
さらに、「new anchor.BN()」を記載しても同様のエラー。
原因
BNがインストールされていないため。
ただし、anchorがインストールされているのに「new anchor.BN()」がエラーになるのは不明。VSCode上もちゃんとサジェストしてくれているが、記述するとエラーになる。
対応
今回は手っ取り早く、 bn.js をインストールした。
% npm add bn.js
import BN from 'bn.js';
let n = new BN(1)
補足1
BNをインストールしたら、なぜか「new anchor.BN()」も利用できるようになった。
import * as anchor from "@project-serum/anchor";
let n = new anchor.BN(1)
補足2
今回試さなかったが、VSCodeの再起動だけで直る場合もあり。