N
Nuxt2mo ago
ColtHands

How do you add a middleware to nitro.routeRules in defineNuxtConfig?

I'm using routeRules with proxy. I've tried doing appMiddleware but having that middleware does nothing, wether it lives in /middleware or /server/middleware. Having that middleare mymiddleware in /server/middleware folder does not generate types for appMiddleware values, it does generate types if it exists in /middleware folder only. So the answer here does not apply. On top of that having .global. middleware seems to work for everything but the routeRules. I'm using nuxt 3.15.4. Maybe there's a general guide on how to add a middleware to routeRules? Is having proxy somehow blocks middleware from applying?
2 Replies
kapa.ai
kapa.ai2mo ago
Hi @ColtHands. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave: ---------------------- Based on the knowledge sources, I can see you're trying to use middleware with routeRules in Nuxt, specifically with the proxy feature. The appMiddleware option in routeRules is a relatively new feature in Nuxt. According to the pull request feat(nuxt): add appMiddleware route rule, this feature was added to allow setting middlewares in the routeRules option in nuxt.config.ts. However, there's an important distinction to understand between route middleware and server middleware in Nuxt: 1. Route middleware (in /middleware folder) runs within the Vue part of your Nuxt app and is used for navigation guards. 2. Server middleware (in /server/middleware folder) runs in the Nitro server part of your app. As mentioned in the documentation, "Route middleware run within the Vue part of your Nuxt app. Despite the similar name, they are completely different from server middleware, which are run in the Nitro server part of your app." Middleware Documentation For your specific case with routeRules and proxy, the issue might be related to the execution order. When using proxy in routeRules, the request might be forwarded before your middleware gets a chance to execute. Unfortunately, the knowledge sources don't provide a specific example of using appMiddleware with routeRules and proxy together. The feature appears to be experimental, as indicated by the PR being relatively recent. For a potential solution, you might want to: 1. Make sure you're using the correct type of middleware for your use case 2. Consider using Nitro's server handlers instead for more control over the request lifecycle You can add a server handler using the addServerHandler function from @nuxt/kit as shown in the Nitro documentation. If you need more specific guidance, you might want to check the latest Nuxt documentation or consider opening an issue on the Nuxt GitHub repository, as this appears to be a newer feature that might not be fully documented yet. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
kapa.ai
kapa.ai2mo ago
<@190227359549358080> Kapa.ai is still learning and improving, please let me know how I did by reacting below.

Did you find this page helpful?