Nuxt.jsで「Classic mode for store/ is deprecated and will be removed in Nuxt 3.」のエラーメッセージが表示される場合の対処法

Nuxt.jsのバージョン3.X以降だとVuexを使う場合に「クラシックモード」という使い方だと下記のエラーメッセージが表示されました。
Classic mode for store/ is deprecated and will be removed in Nuxt 3.ネット上でVuexの記事を探すと、意外とクラシックモードで書かれてある記事が多いので、そのままコピペすると上記のエラーが表示されてしまいます。
今回はクラシックモードからモジュールモードに書き換える方法をまとめておきます。
Vuexのクラシックモードからモジュールモードへの書き換え
下記いずれかの場合に、モジュールモードを使っていると判定されます。
index.jsがstoreオブジェクトをexportしていないindex.jsがそもそも存在していない場合
index.jsを開いてみて、下記のように最後に「export default store」があるとクラシックモードです。
import Vuex from 'vuex'
const state = () => ({
変数名: 初期値,
変数名: 初期値
})
const getters = {
// stateの状態を外部で取り出すときに使用する
変数名: state => state.変数名
}
const mutations = {
ミューテーション関数名(state, 引数){
// ここでstate(ストアの状態)を変更する
state.変数名 = 値
}
}
const actions = {
async アクション関数名({ commit }){
// ここでミューテーションを呼び出し、外部とのAPI通信や非同期処理も行う
commit('ミューテーション関数名', 引数)
}
}
const store = () => new Store({
state,
getters,
mutations,
actions
})
export default storeこれをモジュールモードに書き換えると下記のようになります。
export const state = () => ({
変数名: 初期値,
変数名: 初期値
})
export const getters = {
// stateの状態を外部で取り出すときに使用する
変数名: state => state.変数名
}
export const mutations = {
ミューテーション関数名(state, 引数){
// ここでstate(ストアの状態)を変更する
state.変数名 = 値
}
}
export const actions = {
async アクション関数名({ commit }){
// ここでミューテーションを呼び出し、外部とのAPI通信や非同期処理も行う
commit('ミューテーション関数名', 引数)
}
}それぞれ個別にexportしています。
その他の細かいVuexの使い方は過去に記事にしているので、そちらも参考にしてください。


Visual Studio Codeで読み込んだCSSで設定されているclass名の入力補完をしてくれる拡張機能「HTML CSS Support」
Visual Studio Codeで簡易的なローカルサーバーを起動して、コード保存時に自動でブラウザをリロードする拡張機能「Live Server」
既存プロジェクトにCompassが導入されている場合に備えて、最低限Sassのコンパイルだけでも行えるようにしておく
.htaccessを使って、httpからhttpsへリダイレクトする設定方法
Visual Studio CodeでMovable TypeのMTMLファイルを開く拡張機能「Movable Type Markup Language Syntax」
Android実機で表示しているサイトを、Chrome開発者ツールで開いて検証する方法
Visual Studio Codeでできる最低限のGit操作方法
JavaScriptで簡単にCookie操作ができるライブラリ「js-cookie」
Visual Studio CodeでToDoコメントを一覧で表示する拡張機能「Todo Tree」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法