初めに
今回はNext.jsがversion12になったことによって、SWCエラーの解消方法を備忘録として以下に記載したいと思います
本題はyarn eslint
実行時にエラーになってしまうときの解消方法ですが、良く出るエラーについても記載しておきます
SWCエラー
create-next-app
でプロジェクトを作成後にyarn build
またはnpm run build
を実行すると
error - Failed to load SWC binary
と出る方がいると思います。
解消方法は以下の通りです
まずswcMinify: false
をnext.config.js
に追記することでSWC挙動を停止させます。
// next.config.js
module.exports = {
swcMinify: false // 追記
}
SWCを停止させるとコンパイルするものがなくなるので、代わりとなるもの(ここではbabel)を用意します
公式サイトでも.babelrc
を使用した方法が記載ので詳細はそちらをご覧ください
// .babelrcファイルを作成し以下を追記
{
"presets": ["next/babel"]
}
SWC→babelに変更したことによるeslintのエラー
ここで本題ですが、babelに変更したことによって正しく設定をしないとエラーが発生してしまい、eslintに関しても同様です
ここに関しては、色んなサイトを参照したのですが、解決策を見つけることができませんでした
なので、色々試した結果以下の記載方法で解決できたので備忘録として残します
yarn eslint
を実行したら以下エラーが出ました
Parsing error: Cannot find module 'next/babel'
まずは色んなサイトに記載されていた解決方法で試してみます
// .eslintrc
{
"extends": ["next", "next/core-web-vitals", "prettier", "next/babel"]
}
またyarn eslint
で実行。。。
Parsing error: Cannot find module 'next/babel'
同じエラーが出る。なぜ?
解決方法
.eslintrc
のnext/babel
を消去する
// .eslintrc
{
"extends": ["next", "next/core-web-vitals", "prettier"]
}
これでできました!
他のyarn dev
などのコマンドでもエラーが出ていないことも確認できました
どれもnext/babel
を追記したら問題ないとの記事が多く四苦八苦しました
StackOverflowの記事で同じような問題になった方がいたのでご参考までにURLを後で載せておきます
根本的な原因は不明ですが、同じような問題で解決策が見つからないという方は、こちらの記事を解決策の一つとして試してみては如何でしょうか?
参考記事
公式:https://nextjs.org/docs/advanced-features/customizing-babel-config
StackOverflow:https://stackoverflow.com/questions/68163385/parsing-error-cannot-find-module-next-babel
Zenn:https://zenn.dev/shimotaroo/articles/c8f2e751cd7877