🌪
Jest encountered an unexpected token に遭遇したら
発生した環境
Name | Version |
---|---|
Node | 12.14.1 |
Nuxt.js | 2.13.0 |
Jest | 26.1.0 |
ts-jest | 26.1.3 |
vue-jest | 3.0.6 |
エラー内容
Nuxt.js + TypeScript のプロジェクトでテストを作成して Jest を実行したところ、以下のようなエラーが発生しました。
Jest encountered an unexpected token
...略...
SyntaxError: Unexpected token } in JSON at position 503
エラースタックによると発生源は node_modules/tsconfig/dist/tsconfig.js:135:17
となっています。
解決方法
tsconfig.json
を確認すると、以下のように「通常の JSON」としては不適切な位置にカンマが入っていました。
...略...
"paths": {
"~/*": [
"./*"
], // ← これが怪しい
}, // ← } が 503 文字目
...略...
このカンマを削除したところ、無事にテストが実行できました。めでたしめでたし。
余談
エラー元の tsconfig
というパッケージについて調べたら TypeScript 公式のものではなく、しかも 3 年前から更新されていませんでした。
プロダクションコードの TypeScript はトランスバイルできていたので tsconfig.json
は問題ないはずと思い込み、しばらくエラー文で検索したりして解決までに時間がかかりました。
TypeScript のコンパイラは tsconfig.json
を JSONC(拡張フォーマット)として扱うのでコメントや余分なカンマが入っていても問題なくパースしてくれますが、上記の tsconfig
パッケージでは末尾カンマがエラーになってしまうのですね。
Discussion