🐥
[Next.js] AppRouterとJestでbabelの設定を併用する
エラー内容
Next.jsでAppRouterを利用する場合、SWCが組み込まれており、
この設定が他のライブラリのbabelの設定を競合する場合があります。
./app/layout.tsx:3:1
Syntax error: "next/font" requires SWC although Babel is being used due to a custom babel config being present.
Read more: https://nextjs.org/docs/messages/babel-font-loader-conflict
Next.jsのページ
しかしこの指示に沿ってbabel.config.js
を消した場合、
TypeScriptを利用したJestでトランスパイルが出来なくなり、動かなくなってしまいます。
jestの解決策ページ
解決策
jest.config.js
側に記載し、babel.config.js
は削除します。
記載の例ではNext.jsのbabelの設定を流用するようにしています。
jest.config.js
module.exports = {
・・・,
transform: {
"^.+\\.(js|jsx|ts|tsx)$": ["babel-jest", { presets: ["next/babel"] }],
},
};
Discussion