No More Posting New Topics!

If you have a question or an issue, please start a thread in our Github Discussions Forum.
This forum is closed for new threads/ topics.

Navigation

    Quasar Framework

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Unable to use this.$axios in Vuex: TS2339: Property '$axios' does not exist on type 'Store '.

    Framework
    axios typescript vuex
    5
    11
    2340
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • dobbel
      dobbel last edited by

      Last post claims a solution:
      https://forum.quasar-framework.org/topic/4534/how-to-access-axios-inside-store-action/6

      btw it’s recommended to use nodejs 12.x instead of 14 with Quasar

      M 1 Reply Last reply Reply Quote 0
      • M
        Maxiride @dobbel last edited by

        @dobbel Thanks for the update!

        I didn’t knew Node 12 was recommended, did I miss the note somewhere in the documentation?

        dobbel 2 Replies Last reply Reply Quote 0
        • dobbel
          dobbel @Maxiride last edited by dobbel

          @Maxiride

          No I don’t think it’s in the docs, but that’s what I have been told on these forums more then once by staff members.

          Until a Quasar staff member or changelog will say otherwise I will repeat this advice when I see someone using node > 12.

          1 Reply Last reply Reply Quote 0
          • dobbel
            dobbel @Maxiride last edited by

            @Maxiride

            The chief still says it 2 days ago:
            https://github.com/quasarframework/quasar/issues/8025

            1 Reply Last reply Reply Quote 0
            • Hawkeye64
              Hawkeye64 last edited by

              https://github.com/quasarframework/quasar/pull/8028

              1 Reply Last reply Reply Quote 0
              • Y
                ytsejam last edited by

                while booting axios , you have to include in store also.

                import axios from 'axios'
                
                export default ({ store, Vue }) => {
                  Vue.prototype.$axios = axios
                  store.$axios = axios
                }```
                1 Reply Last reply Reply Quote 1
                • Hawkeye64
                  Hawkeye64 last edited by

                  @ytsejam store also has a reference to the vm. I can’t remember at this time if it’s called app or _vm (store is one, router uses the other).

                  1 Reply Last reply Reply Quote 0
                  • Y
                    ytsejam last edited by

                    @Hawkeye64 I think it is used as “this._vm.axios”, but did not work for me I have found this boot solution.

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      codethirsty @ytsejam last edited by codethirsty

                      @ytsejam said in Unable to use this.$axios in Vuex: TS2339: Property '$axios' does not exist on type 'Store '.:

                      @Hawkeye64 I think it is used as “this._vm.axios”, but did not work for me I have found this boot solution.

                      import Vue from 'vue'
                      import Vuex from 'vuex'
                      import axios from 'axios'
                      
                      axiosContext.interceptors.response.use(
                          response => {
                            if (response.data.code === 400) {
                              localStorage.removeItem('token');
                              window.location = "/login";
                              return;
                            }
                            return response;
                          },
                          error => {
                            if (error.response && error.response.status === 401) {
                              localStorage.removeItem('token');
                              window.location = "/login";
                              return;
                            }
                            return Promise.reject(error);
                          }
                        );
                      Vue.prototype.$axios = axiosContext;
                      Vuex.Store.prototype.$axios = axiosContext;
                      

                      I boot them this way

                      1 Reply Last reply Reply Quote 0
                      • Hawkeye64
                        Hawkeye64 last edited by

                        @ytsejam

                        I think it is used as “this._vm.axios”, but did not work for me I have found this boot solution.

                        For one thing, you would need to access it as: this._vm.$axios because you put a $ in front on the prototype definition
                        Second, I don’t know how you are writing your functions but the this will be inforrect if you used fat arrow (=>) – they need to be functions for this to be referencing the store.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post