logaretm / villus

🏎 A tiny and fast GraphQL client for Vue.js

Home Page:https://villus.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Uncaught Error: Cannot detect villus Client, did you forget

cworkschris opened this issue · comments

to call useClient? Alternatively, you can explicitly pass a client as the manualClient argument.

To start off, thank you logaretm! Villus looks really cool and since apollo does not seem to work via cdn, it really keeps the spirit alive of vue usable for any size project.

I'm trying to do a minimal proof of concept, following along https://gitmemories.com/logaretm/villus
Maybe I'm getting access to villus in the most awkward way possible, but what happens is the useClient is called successfully in the mounted() handling, but on the clickLoad handler I get "vue.global.js:1414 Uncaught Error: Cannot detect villus Client, did you forget to call useClient? Alternatively, you can explicitly pass a client as the manualClient argument."

I haven't messed around with the manualClient because it seems like I must be doing something fundamentally wrong. Am I way off in the weeds here?

I looked at the two comments where you explained that it can only be used during a composition api setup call. Will this not work at all when using options? I see this true: #72 (comment)
Oddly, even when I move over to composition api and use the <script setup> I'm still having this same problem. I can't find anything manualClient either.

I checked your earlier snippets and there is an issue with it:

function mounted() {
 // too late to call this
  useClient({
    url: 'http://somemachine.local:8000/graphql',
  });
}

Instead, add a setup function and call it there on your app component:

const app = createApp({
  setup() {
    useClient({
      url: 'http://somemachine.local:8000/graphql',
    });
  }
}

It should work fine with the options API as it is just additive. I will probably need to add examples with the options API usage but it would be very limited.

Sorry for the late response. Perhaps there are a couple of Vue installations competing here. Can you create a minimal repo for it where this happens?