Closed1
Jestとethers.jsで「TypeError: Do not know how to serialize a BigInt」で怒られる
問題
ethers.jsとJestでテスト書いてたら怒られた。
(まだJest使ってんのとか、まだether.js使ってんの?ってはってのは一旦おいておいてw)
● Test suite failed to run
TypeError: Do not know how to serialize a BigInt
at stringify (<anonymous>)
at messageParent (node_modules/jest-worker/build/workers/messageParent.js:29:19)
環境
- ethers.js: 6.7.1
- Jest: 29.7.0
解決策
- Jestのconfigに
workerThreads: true,
を足す- なんでこれで解決するのかは全くわかっていない
解決に至った経緯
ethers.jsの6のバグだと最初は思っていた
そういう記述もあるし、ただ6.3以上なら治ってるよ〜って書いてて、謎だった。
そのIssueに書いてあったパッチの
// @ts-expect-error 🚧 ETHERS 6.1.0 IS BROKEN. THIS IS A WORKAROUND
BigInt.prototype.toJSON = function () {
return this.toString()
}
も試したが効果がなかった。
露頭に迷っていた。
BigInt
って書いてあったから、思考停止で ethers.js
を疑っていたが、スタックトレース見るとJestのバグじゃないかと思った。
JestのIssue見たらビンゴ!!!
何個かこれで治ったっていう報告があるが、自分は効果なかったやつもちらほら。
最終的に効いたのは、 workerThreads: true,
だった。
参考文献
このスクラップは2023/10/23にクローズされました