fix(vue): missing unhead context (#3589)

Co-authored-by: Benjamin Canac <canacb1@gmail.com>
This commit is contained in:
Harlan Wilton
2025-03-18 01:09:02 +11:00
committed by GitHub
parent 6588ae8669
commit 0897e9ef05
3 changed files with 11 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ import { computed } from 'vue'
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports' import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
// FIXME: https://github.com/nuxt/module-builder/issues/141#issuecomment-2078248248 // FIXME: https://github.com/nuxt/module-builder/issues/141#issuecomment-2078248248
import type {} from '#app' import type {} from '#app'
import type { UseHeadInput } from '@unhead/vue/types'
export default defineNuxtPlugin(() => { export default defineNuxtPlugin(() => {
const appConfig = useAppConfig() const appConfig = useAppConfig()
@@ -33,12 +34,11 @@ export default defineNuxtPlugin(() => {
}) })
// Head // Head
const headData: any = { const headData: UseHeadInput = {
style: [{ style: [{
innerHTML: () => root.value, innerHTML: () => root.value,
tagPriority: -2, tagPriority: 'critical',
id: 'nuxt-ui-colors', id: 'nuxt-ui-colors'
type: 'text/css'
}] }]
} }
@@ -55,7 +55,5 @@ export default defineNuxtPlugin(() => {
}] }]
} }
if (!nuxtApp.isVue) { useHead(headData)
useHead(headData)
}
}) })

View File

@@ -3,6 +3,11 @@ import type { Plugin } from 'vue'
export default { export default {
install(app) { install(app) {
// check for existing head instance to avoid replacement
// bit hacky but we can't use injectHead() here
if (app._context.provides.usehead) {
return
}
const head = createHead() const head = createHead()
app.use(head) app.use(head)
} }

View File

@@ -61,7 +61,6 @@ export const useState = <T>(key: string, init: () => T): Ref<T> => {
export function useNuxtApp() { export function useNuxtApp() {
return { return {
isHydrating: true, isHydrating: true,
isVue: true,
payload: { serverRendered: false } payload: { serverRendered: false }
} }
} }
@@ -69,7 +68,7 @@ export function useNuxtApp() {
export function defineNuxtPlugin(plugin: (nuxtApp: NuxtApp) => void) { export function defineNuxtPlugin(plugin: (nuxtApp: NuxtApp) => void) {
return { return {
install(app) { install(app) {
plugin({ vueApp: app } as NuxtApp) app.runWithContext(() => plugin({ vueApp: app } as NuxtApp))
} }
} satisfies VuePlugin } satisfies VuePlugin
} }