Nuxt, VueJS Это должно быть вызвано в функции настройки

#vue.js #nuxt.js

Вопрос:

У меня есть проект. В настоящее время он доступен на определенном веб-сайте. Мне нужно внести некоторые изменения. Когда я загружаю проект из gitlab и запускаю его, он выдает ошибку:это должно быть вызвано в функции настройки.

путь: .nuxt/composition-api/index.js

 const useContext = () => {
  const vm = CompositionApi.getCurrentInstance();
  if (!vm)
    throw new Error("This must be called within a setup function.");
  return {
    ...(vm[globalNuxt] || vm.$options).context,
    route: CompositionApi.computed(() => vm.$route),
    query: CompositionApi.computed(() => vm.$route.query),
 

Что случилось?

Мне нужно запустить проект, чтобы внести некоторые изменения, но я не могу развернуть его на своем локальном сервере.

Обновление: useContex используется по умолчанию.vue

 ...
setup (_, { isServer, refs }: any) {
    // console.info(context)
    // const refs = context.refs
    const { store } = useContext()
    const { scrolllock } = scrollLock(store)
    const locationName = computed(() => store.getters.locationName)
    const location = computed({
      set (val: boolean) {
        store.dispatch('setLocationModal', val)
      },
      get () {
        return store.getters.locationModal
      }
    })
...
 

вывод cmd, когда я пытаюсь зайти на сайт

 [Vue warn]: [vue-composition-api] already installed. Vue.use(VueCompositionAPI) should be called only once.


 ERROR  [Vue warn]: Error in data(): "Error: This must be called within a setup function."                    22:50:04

found in

---> <Layouts/default.vue> at layouts/default.vue
       <Root>


 ERROR  [Vue warn]: Error in data(): "Error: This must be called within a setup function."                    22:50:05

found in

---> <Layouts/default.vue> at layouts/default.vue
       <Root>


 ERROR  [Vue warn]: Error in data(): "Error: This must be called within a setup function."                    22:50:24

found in

---> <Layouts/default.vue> at layouts/default.vue
       <Root>
 

Комментарии:

1. Ошибка предполагает, что вы используете @vue/composition-api в дополнение к @nuxtjs/composition-api . Вам нужно только последнее, и вам не нужно будет звонить Vue.use(VueCompositionAPI) с этим модулем.

2. К сожалению, это не помогло. Я удалил форму Vue.use(VueCompositionAPI) composition-api.js и это не помогло. Может быть, есть другой способ начать это? Мне нужно изменить только файлы scss.

3. Для определения проблемы недостаточно контекста. Можете ли вы поделиться ссылкой на репродукцию?

Ответ №1:

Судя по всему, кажется, что вы

  • Вы создали другой плагин для VueCompositionAPI, когда он уже установлен, например @nuxtjs/composition-api

Я бы посоветовал вам удалить любой другой composition-api из вашего проекта и придерживаться последней официальной версии @nuxtjs/composition-api с Vuex v4 для Nuxt 2

В последней версии @nuxtjs/composition-api вы могли бы использовать

 const store = useStore();
// OR
const { store } = useContext();
 

ПРИМЕЧАНИЕ: Вы должны определить вспомогательные функции, например const router = useStore() , непосредственно внутри вашей setup() функции, а не внутри вашего метода, чтобы избежать This must be called within a setup function ошибок.

Для тех, кто хочет использовать route

Чтобы упростить обновление до Nuxt 3, рекомендуется не обращаться route к , query , from и params из useContext , а использовать useRoute вспомогательную функцию.

Ответ №2:

Я не знаю, что там произошло. Я удалил это хранилище и снова его клонировал. Далее я сделал следующее: npm init а потом npm run dev И это работает.