mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-22 05:35:13 +00:00
fix(nuxt): improve return type of useRequestEvent
(#25480)
This commit is contained in:
parent
860cfe16b3
commit
73421483f6
@ -462,7 +462,7 @@ export const fetchWithCookie = async (event: H3Event, url: string) => {
|
|||||||
// This composable will automatically pass cookies to the client
|
// This composable will automatically pass cookies to the client
|
||||||
const event = useRequestEvent()
|
const event = useRequestEvent()
|
||||||
|
|
||||||
const { data: result } = await useAsyncData(() => fetchWithCookie(event, '/api/with-cookie'))
|
const { data: result } = await useAsyncData(() => fetchWithCookie(event!, '/api/with-cookie'))
|
||||||
|
|
||||||
onMounted(() => console.log(document.cookie))
|
onMounted(() => console.log(document.cookie))
|
||||||
</script>
|
</script>
|
||||||
|
@ -15,7 +15,7 @@ Within your pages, components, and plugins you can use `useRequestEvent` to acce
|
|||||||
const event = useRequestEvent()
|
const event = useRequestEvent()
|
||||||
|
|
||||||
// Get the URL
|
// Get the URL
|
||||||
const url = event.path
|
const url = event?.path
|
||||||
```
|
```
|
||||||
|
|
||||||
::callout
|
::callout
|
||||||
|
@ -15,11 +15,14 @@ Nuxt provides composables and utilities for first-class server-side-rendering su
|
|||||||
```js
|
```js
|
||||||
const event = useRequestEvent()
|
const event = useRequestEvent()
|
||||||
|
|
||||||
// Set the status code to 404 for a custom 404 page
|
// event will be undefined in the browser
|
||||||
setResponseStatus(event, 404)
|
if (event) {
|
||||||
|
// Set the status code to 404 for a custom 404 page
|
||||||
|
setResponseStatus(event, 404)
|
||||||
|
|
||||||
// Set the status message as well
|
// Set the status message as well
|
||||||
setResponseStatus(event, 404, 'Page Not Found')
|
setResponseStatus(event, 404, 'Page Not Found')
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
::callout
|
::callout
|
||||||
|
@ -83,7 +83,7 @@ export default defineComponent({
|
|||||||
const event = useRequestEvent()
|
const event = useRequestEvent()
|
||||||
|
|
||||||
// TODO: remove use of `$fetch.raw` when nitro 503 issues on windows dev server are resolved
|
// TODO: remove use of `$fetch.raw` when nitro 503 issues on windows dev server are resolved
|
||||||
const eventFetch = import.meta.server ? event.fetch : import.meta.dev ? $fetch.raw : globalThis.fetch
|
const eventFetch = import.meta.server ? event!.fetch : import.meta.dev ? $fetch.raw : globalThis.fetch
|
||||||
const mounted = ref(false)
|
const mounted = ref(false)
|
||||||
onMounted(() => { mounted.value = true; teleportKey.value++ })
|
onMounted(() => { mounted.value = true; teleportKey.value++ })
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ export default defineComponent({
|
|||||||
if (import.meta.server && import.meta.prerender) {
|
if (import.meta.server && import.meta.prerender) {
|
||||||
const hints = r.headers.get('x-nitro-prerender')
|
const hints = r.headers.get('x-nitro-prerender')
|
||||||
if (hints) {
|
if (hints) {
|
||||||
appendResponseHeader(event, 'x-nitro-prerender', hints)
|
appendResponseHeader(event!, 'x-nitro-prerender', hints)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setPayload(key, result)
|
setPayload(key, result)
|
||||||
|
@ -111,7 +111,7 @@ export function useCookie<T = string | null | undefined> (name: string, _opts?:
|
|||||||
const nuxtApp = useNuxtApp()
|
const nuxtApp = useNuxtApp()
|
||||||
const writeFinalCookieValue = () => {
|
const writeFinalCookieValue = () => {
|
||||||
if (opts.readonly || isEqual(cookie.value, cookies[name])) { return }
|
if (opts.readonly || isEqual(cookie.value, cookies[name])) { return }
|
||||||
writeServerCookie(useRequestEvent(nuxtApp), name, cookie.value, opts as CookieOptions<any>)
|
writeServerCookie(useRequestEvent(nuxtApp)!, name, cookie.value, opts as CookieOptions<any>)
|
||||||
}
|
}
|
||||||
const unhook = nuxtApp.hooks.hookOnce('app:rendered', writeFinalCookieValue)
|
const unhook = nuxtApp.hooks.hookOnce('app:rendered', writeFinalCookieValue)
|
||||||
nuxtApp.hooks.hookOnce('app:error', () => {
|
nuxtApp.hooks.hookOnce('app:error', () => {
|
||||||
@ -131,7 +131,7 @@ export function refreshCookie(name: string) {
|
|||||||
|
|
||||||
function readRawCookies (opts: CookieOptions = {}): Record<string, unknown> | undefined {
|
function readRawCookies (opts: CookieOptions = {}): Record<string, unknown> | undefined {
|
||||||
if (import.meta.server) {
|
if (import.meta.server) {
|
||||||
return parse(getRequestHeader(useRequestEvent(), 'cookie') || '', opts)
|
return parse(getRequestHeader(useRequestEvent()!, 'cookie') || '', opts)
|
||||||
} else if (import.meta.client) {
|
} else if (import.meta.client) {
|
||||||
return parse(document.cookie, opts)
|
return parse(document.cookie, opts)
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ import { useNuxtApp } from '../nuxt'
|
|||||||
import { toArray } from '../utils'
|
import { toArray } from '../utils'
|
||||||
|
|
||||||
/** @since 3.0.0 */
|
/** @since 3.0.0 */
|
||||||
export function useRequestEvent (nuxtApp: NuxtApp = useNuxtApp()): H3Event {
|
export function useRequestEvent (nuxtApp: NuxtApp = useNuxtApp()) {
|
||||||
return nuxtApp.ssrContext?.event as H3Event
|
return nuxtApp.ssrContext?.event
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @since 3.0.0 */
|
/** @since 3.0.0 */
|
||||||
@ -52,7 +52,10 @@ export function setResponseStatus (arg1: H3Event | number | undefined, arg2?: nu
|
|||||||
if (arg1 && typeof arg1 !== 'number') {
|
if (arg1 && typeof arg1 !== 'number') {
|
||||||
return _setResponseStatus(arg1, arg2 as number | undefined, arg3)
|
return _setResponseStatus(arg1, arg2 as number | undefined, arg3)
|
||||||
}
|
}
|
||||||
return _setResponseStatus(useRequestEvent(), arg1, arg2 as string | undefined)
|
const event = useRequestEvent()
|
||||||
|
if (event) {
|
||||||
|
return _setResponseStatus(event, arg1, arg2 as string | undefined)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @since 3.8.0 */
|
/** @since 3.8.0 */
|
||||||
@ -60,5 +63,5 @@ export function prerenderRoutes (path: string | string[]) {
|
|||||||
if (!import.meta.server || !import.meta.prerender) { return }
|
if (!import.meta.server || !import.meta.prerender) { return }
|
||||||
|
|
||||||
const paths = toArray(path)
|
const paths = toArray(path)
|
||||||
appendHeader(useRequestEvent(), 'x-nitro-prerender', paths.map(p => encodeURIComponent(p)).join(', '))
|
appendHeader(useRequestEvent()!, 'x-nitro-prerender', paths.map(p => encodeURIComponent(p)).join(', '))
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import { useRequestEvent } from './ssr'
|
|||||||
/** @since 3.5.0 */
|
/** @since 3.5.0 */
|
||||||
export function useRequestURL () {
|
export function useRequestURL () {
|
||||||
if (import.meta.server) {
|
if (import.meta.server) {
|
||||||
const url = getRequestURL(useRequestEvent())
|
const url = getRequestURL(useRequestEvent()!)
|
||||||
url.pathname = joinURL(useRuntimeConfig().app.baseURL, url.pathname)
|
url.pathname = joinURL(useRuntimeConfig().app.baseURL, url.pathname)
|
||||||
return url
|
return url
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ definePageMeta({
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (import.meta.server) {
|
if (import.meta.server) {
|
||||||
setResponseHeader(useRequestEvent(), 'x-extend', useRoute().meta.value as string)
|
setResponseHeader(useRequestEvent()!, 'x-extend', useRoute().meta.value as string)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -49,6 +49,6 @@ defineProps<{
|
|||||||
}>()
|
}>()
|
||||||
|
|
||||||
const evt = useRequestEvent()
|
const evt = useRequestEvent()
|
||||||
const headers = getResponseHeaders(evt)
|
const headers = evt ? getResponseHeaders(evt) : {}
|
||||||
const { data } = await useFetch('/api/very-long-request')
|
const { data } = await useFetch('/api/very-long-request')
|
||||||
</script>
|
</script>
|
||||||
|
2
test/fixtures/basic/modules/runtime/page.vue
vendored
2
test/fixtures/basic/modules/runtime/page.vue
vendored
@ -8,7 +8,7 @@ definePageMeta({
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (import.meta.server) {
|
if (import.meta.server) {
|
||||||
setResponseHeader(useRequestEvent(), 'x-extend', useRoute().meta.value as string)
|
setResponseHeader(useRequestEvent()!, 'x-extend', useRoute().meta.value as string)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -4,7 +4,9 @@ export default defineNuxtPlugin({
|
|||||||
name: 'server-only-plugin',
|
name: 'server-only-plugin',
|
||||||
setup () {
|
setup () {
|
||||||
const evt = useRequestEvent()
|
const evt = useRequestEvent()
|
||||||
setHeader(evt, 'custom-head', 'hello')
|
if (evt) {
|
||||||
|
setHeader(evt, 'custom-head', 'hello')
|
||||||
|
}
|
||||||
},
|
},
|
||||||
env: {
|
env: {
|
||||||
islands: false
|
islands: false
|
||||||
|
Loading…
Reference in New Issue
Block a user