Size: a a a

Nuxt.js | Vue SSR

2021 February 06

ДМ

Данил Мальков... in Nuxt.js | Vue SSR
Синхронный строй?
источник

AG

Anton Golovanov in Nuxt.js | Vue SSR
Надежды рушаться.
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Создал плагин api.ts

const myPlugin: Plugin = ({ $axios }, inject) => {
   inject('api', {
       acceptUserConfirmation(token: string, environment: string) {
           return $axios.post(
               `${
process.env.NUXT_ENV_URL}/api/test/send`,
               { token, environment }
           )
       }
   })
}




Но в компоненте при вызове this.$api.acceptUserConfirmation

шторм подвсвечивает acceptUserConfirmation как unresolved

я так понимаю нужно задекларировать объект api но не пойму как и где это сделать
источник

IB

Ilia Bosenok in Nuxt.js | Vue SSR
Voice Chat ended
источник

V

Vlad in Nuxt.js | Vue SSR
Alexander Nemirov
Создал плагин api.ts

const myPlugin: Plugin = ({ $axios }, inject) => {
   inject('api', {
       acceptUserConfirmation(token: string, environment: string) {
           return $axios.post(
               `${
process.env.NUXT_ENV_URL}/api/test/send`,
               { token, environment }
           )
       }
   })
}




Но в компоненте при вызове this.$api.acceptUserConfirmation

шторм подвсвечивает acceptUserConfirmation как unresolved

я так понимаю нужно задекларировать объект api но не пойму как и где это сделать
источник

V

Vlad in Nuxt.js | Vue SSR
подправь интерфейсы под себя
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
подправь интерфейсы под себя
получается как то так?
interface Api {
   (token: string, environment: string): object
}
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
в доке по тс нашел подобный пример, но кажется тут он не подходит
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Или все таки вот так
interface Api {
   acceptUserConfirmation: object
}


где мы указываем имя функции и тип возвращаемого значения
источник

V

Vlad in Nuxt.js | Vue SSR
Alexander Nemirov
получается как то так?
interface Api {
   (token: string, environment: string): object
}
acceptUserConfirmation: (token: string, enviroment: string) => Promise<???>
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
acceptUserConfirmation: (token: string, enviroment: string) => Promise<???>
точно, спасибо!
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
acceptUserConfirmation: (token: string, enviroment: string) => Promise<???>
TS ругаться перестал, но почему то ESLint теперь в интрфейсе говорит, что эти переменные не используются

ESLint: 'token' is defined but never used. Allowed unused args must match /^_/u.(@typescript-eslint/no-unused-vars)
источник

V

Vlad in Nuxt.js | Vue SSR
Alexander Nemirov
TS ругаться перестал, но почему то ESLint теперь в интрфейсе говорит, что эти переменные не используются

ESLint: 'token' is defined but never used. Allowed unused args must match /^_/u.(@typescript-eslint/no-unused-vars)
покажи файл
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
покажи файл
import { Plugin } from '@nuxt/types'

interface Api {
   acceptUserConfirmation: (token: string, enviroment: string) => Promise<any>
}

declare module 'vue/types/vue' {
   // this.$api inside Vue components
   interface Vue {
       $api: Api
   }
}

declare module '@nuxt/types' {
   // nuxtContext.app.$api inside asyncData, fetch, plugins, middleware, nuxtServerInit
   interface NuxtAppOptions {
       $api: Api
   }
   // nuxtContext.$api
   interface Context {
       $api: Api
   }
}

declare module 'vuex/types/index' {
   // this.$api inside Vuex stores
   interface Store<S> {
       $api: Api
   }
}

const myPlugin: Plugin = ({ $axios }, inject) => {
   inject('api', {
       acceptUserConfirmation(token: string, environment: string) {
           return $axios.post(
               `${
processprocess.env.NUXT_ENV_URL}/api/front/test/send`,
               { token, environment }
           )
       }
   })
}

export default myPlugin
источник

V

Vlad in Nuxt.js | Vue SSR
Alexander Nemirov
import { Plugin } from '@nuxt/types'

interface Api {
   acceptUserConfirmation: (token: string, enviroment: string) => Promise<any>
}

declare module 'vue/types/vue' {
   // this.$api inside Vue components
   interface Vue {
       $api: Api
   }
}

declare module '@nuxt/types' {
   // nuxtContext.app.$api inside asyncData, fetch, plugins, middleware, nuxtServerInit
   interface NuxtAppOptions {
       $api: Api
   }
   // nuxtContext.$api
   interface Context {
       $api: Api
   }
}

declare module 'vuex/types/index' {
   // this.$api inside Vuex stores
   interface Store<S> {
       $api: Api
   }
}

const myPlugin: Plugin = ({ $axios }, inject) => {
   inject('api', {
       acceptUserConfirmation(token: string, environment: string) {
           return $axios.post(
               `${
processprocess.env.NUXT_ENV_URL}/api/front/test/send`,
               { token, environment }
           )
       }
   })
}

export default myPlugin
не знаю, не должно. Лучше вынеси все эти типы в d.ts файл
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
не знаю, не должно. Лучше вынеси все эти типы в d.ts файл
Да, согласен, а линтом действительно странно, и вызов this.$api.acceptUserConfirmation('12', '21') есть, не  понятно, чего ему не хватает
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
не знаю, не должно. Лучше вынеси все эти типы в d.ts файл
а файл  d.tsнужно как то подключать? гугл говорит просто положить в папку плагинс
источник

V

Vlad in Nuxt.js | Vue SSR
Alexander Nemirov
а файл  d.tsнужно как то подключать? гугл говорит просто положить в папку плагинс
ну вот
источник

AN

Alexander Nemirov in Nuxt.js | Vue SSR
Vlad
ну вот
а, да все ок, надо было просто проект пересобрать
источник

᠌ ᠌ ᠌᠌᠌ ᠌ ᠌᠌᠌ ᠌ ᠌᠌᠌ ... in Nuxt.js | Vue SSR
источник