@nuxtjs/axiosでTypeError: Cannot read property ‘cancelToken’ of undefinedが出たときの対処方

プログラミング
  • 下のコードを書いた時にエラーが出た。問題はreturn config してないことが理由だった。
## エラーコード
$axios.onRequest(async (config) => {
  await store.dispatch('task/fetchTasks')
})
## エラーが出ないコード
$axios.onRequest((config) => {
  store.dispatch('task/fetchTasks')
})
  • @nuxtjs/axiosをコードを読んでみると、fn(config)の返り値を見てる。
    async awaitをつけるとPromiseが返り値になるので、configが返って来てない。
    async awaitを付けてない場合は返り値がないので、configが使われてたみたい。
    Promiseが返って来るので、’cancelToken’のプロパティがないと怒られていた。
onRequest(fn) {
  this.interceptors.request.use(config => fn(config) || config)
},
  • 解決方法
    return config を入れる。
$axios.onRequest(async (config) => {
  await store.dispatch('task/fetchTasks')
  return config
})