Nuxt,VueJS必须在setup函数中调用

ezykj2lf  于 2023-08-07  发布在  Vue.js
关注(0)|答案(3)|浏览(226)

我有个项目目前在某个网站上有。我需要做些改变。当我从gitlab下载一个项目并运行时,它会抛出一个错误:* This must be called within a setup function.*
路径:.nuxt/composition-api/index.js

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

字符串
怎么了?
我需要运行该项目以进行一些更改,但无法将其部署到本地服务器上。
更新:useContex是默认的。vue

  1. ...
  2. setup (_, { isServer, refs }: any) {
  3. // console.info(context)
  4. // const refs = context.refs
  5. const { store } = useContext()
  6. const { scrolllock } = scrollLock(store)
  7. const locationName = computed(() => store.getters.locationName)
  8. const location = computed({
  9. set (val: boolean) {
  10. store.dispatch('setLocationModal', val)
  11. },
  12. get () {
  13. return store.getters.locationModal
  14. }
  15. })
  16. ...

我尝试访问站点时的cmd输出

  1. [Vue warn]: [vue-composition-api] already installed. Vue.use(VueCompositionAPI) should be called only once.
  2. ERROR [Vue warn]: Error in data(): "Error: This must be called within a setup function." 22:50:04
  3. found in
  4. ---> <Layouts/default.vue> at layouts/default.vue
  5. <Root>
  6. ERROR [Vue warn]: Error in data(): "Error: This must be called within a setup function." 22:50:05
  7. found in
  8. ---> <Layouts/default.vue> at layouts/default.vue
  9. <Root>
  10. ERROR [Vue warn]: Error in data(): "Error: This must be called within a setup function." 22:50:24
  11. found in
  12. ---> <Layouts/default.vue> at layouts/default.vue
  13. <Root>

pepwfjgg

pepwfjgg1#

根据我的经验,npm不能安装@nuxtjs/composition-api旧版本,或者类似的东西,所以我卸载了它的旧版本并安装了新版本,它工作正常
这就是我所做

  1. rm -rf node_modules && rm -rf package-lock.json && npm uninstall @nuxtjs/composition-api && npm i @nuxtjs/composition-api && npm i

字符串

o0lyfsai

o0lyfsai2#

从现在的情况来看

  • 你为VueCompositionAPI创建了另一个插件,当它已经安装时,例如@nuxtjs/composition-api

我建议你从你的项目中删除任何其他的composition-api,并坚持使用最新版本的官方@nuxtjs/composition-api with Vuex v4 for Nuxt 2。
在最新版本的@nuxtjs/composition-api中,可以使用

  1. const store = useStore();
  2. // OR
  3. const { store } = useContext();

字符串
注意:你必须直接在setup()函数中定义像const router = useStore()这样的辅助函数,而不是在你的方法中,以避免This must be called within a setup function错误。
对于那些想要使用route
为了顺利升级到Nuxt 3,建议 * 不要**从useContext访问routequeryfromparams,而是使用useRoute辅助函数。

ssgvzors

ssgvzors3#

我不知道那里发生了什么。我删除了那个仓库并再次克隆了它。接下来我这样做:npm init,然后是npm run dev,这样就行了。

相关问题