#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
И это работает.