defineRouteMiddleware()

Alias of defineNuxtRouteMiddleware for typing navigation guard functions.

Since Nuxt 3.0 Spec ↗

Syntax

export default defineNuxtRouteMiddleware((to, from) => { ... })

Parameters

NameTypeRequiredDescription
middleware (to, from) => void | RouteLocationRaw | false | Promise<...> Yes Guard run before each matched navigation. Return `navigateTo()` to redirect, `abortNavigation()` / `false` to cancel.

Returns

void — Wrapper providing types for the middleware function.

Examples

// middleware/auth.global.ts — runs on every route
export default defineNuxtRouteMiddleware((to) => {
  const user = useState('user')
  if (to.meta.requiresAuth && !user.value) {
    return navigateTo('/login')
  }
})
// middleware/role.ts — named, opt-in via definePageMeta
export default defineNuxtRouteMiddleware((to, from) => {
  if (!hasRole(to.meta.role as string)) {
    return abortNavigation()
  }
})

Notes

Files in `middleware/` are auto-registered: a `.global` suffix runs on every route, otherwise it is named and opted into via `definePageMeta({ middleware: [...] })`. Runs on both server (first load) and client (navigations). `defineNuxtRouteMiddleware` is the canonical name.

See also