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の使い方は過去に記事にしているので、そちらも参考にしてください。


コードスニペットの管理方法や命名規則について
CSSやJavaScriptでスクロールバーの横幅を取得する方法
MAMPでローカル開発環境にWordPressをインストールする手順
Visual Studio Codeでパス補完機能を細かく設定して自分好みにできる拡張機能「Path Autocomplete」
gulp-plumberとgulp-notifyでgulpエラー時にデスクトップで通知がくるようにする
EmmetのWrap with Abbreviationで複数行のマークアップを効率的に行う
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法
CSSでclassがついていないタグにだけスタイルを当てる方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Keynoteのプリセットカラーを好みの色にカスタマイズする方法
コーディング時に「アノテーションコメント」を使ってコードを見やすく管理する
MacのSublime Textを日本語化する方法
Path Finder 8の「パスのコピー」の種類とその違いについて
iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法
Abstractを使っている場合は、Default Folder Xの「今開いている書類のある場所をファイルダイアログで開く」をオフにする
StationであらゆるWebサービスをまとめて管理する
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
Adobe初のUI/UXデザインツール「AdobeXD」の使い方を見てきました!【CSS Nite in Kobe】