runWithContext not working as expected
I have following async composable:
and i use it like that in the app.vue
Why do I still get that error A composable that requires access to the Nuxt instance
import type { CraftSite } from 'vue-craftcms'
type SeoData = {
MetaTitleContainer: { title?: { title: string } }
}
export async function useCraftSeoMatic(uri?: string | Ref<string>, site?: CraftSite | Ref<CraftSite>) {
const { baseUrl, siteMap } = useRuntimeConfig().public.craftcms
const currentUri = uri ? ref(uri) : useCraftUri()
const apiEndpoint = computed(() =>
`${baseUrl}/actions/seomatic/meta-container/all-meta-containers/?asArray=true&uri=${encodeURIComponent(currentUri.value)}`,
)
const { data: seoMaticData, error } = await useAsyncData(
'seoMaticData',
async () => {
const response = await $fetch<SeoData>(apiEndpoint.value)
if (!response || typeof response !== 'object') {
console.error('Transformation of SEOmatic data failed, please verify that the SEOmatic endpoint is working correctly')
return undefined
}
return {
title: response.MetaTitleContainer?.title?.title ?? '',
};
}
)
if(error.value) {
console.error(error.value)
}
const app = useNuxtApp()
app.runWithContext(() => {
useHead({
title: seoMaticData.value?.title,
})
})
}import type { CraftSite } from 'vue-craftcms'
type SeoData = {
MetaTitleContainer: { title?: { title: string } }
}
export async function useCraftSeoMatic(uri?: string | Ref<string>, site?: CraftSite | Ref<CraftSite>) {
const { baseUrl, siteMap } = useRuntimeConfig().public.craftcms
const currentUri = uri ? ref(uri) : useCraftUri()
const apiEndpoint = computed(() =>
`${baseUrl}/actions/seomatic/meta-container/all-meta-containers/?asArray=true&uri=${encodeURIComponent(currentUri.value)}`,
)
const { data: seoMaticData, error } = await useAsyncData(
'seoMaticData',
async () => {
const response = await $fetch<SeoData>(apiEndpoint.value)
if (!response || typeof response !== 'object') {
console.error('Transformation of SEOmatic data failed, please verify that the SEOmatic endpoint is working correctly')
return undefined
}
return {
title: response.MetaTitleContainer?.title?.title ?? '',
};
}
)
if(error.value) {
console.error(error.value)
}
const app = useNuxtApp()
app.runWithContext(() => {
useHead({
title: seoMaticData.value?.title,
})
})
}and i use it like that in the app.vue
<script setup lang="ts">
// Fetch & apply seomatic properties
await useCraftSeoMatic()
</script><script setup lang="ts">
// Fetch & apply seomatic properties
await useCraftSeoMatic()
</script>Why do I still get that error A composable that requires access to the Nuxt instance