We have a Layer0 site that is still proxying routes from our legacy site.
On our legacy site, we have a directory /pages/* that contains content we want to incrementally migrate.
However, I cannot seem to match a new single route correctly in the Layer0 site. In the documentation it states:
When Layer0 receives a request, it executes each route that matches the request in the order in which they are declared until one sends a response.
So we have the legacy route, which is .get('/pages/:slug*', proxyOrigin)
where proxyOrigin
does return a response according to docs because it uses proxy
But the thing is, I cannot move this route to under .use(nuxtRoutes)
( which would return the .get route ) because Layer0 returns an error: Error: Routes cannot be added after the 'fallback' route as they would be unreachable.
So it seems like it is treating .use(nuxtRoutes)
as a fallback.
In @xdn/core we could use .use(nuxtRoutes)
anywhere in the chain with no error, but upgrading to @layer0 package required it to be directly above .fallback() ( as far as I could tell ).
To show a full very basic example, here is what is not working for me:
routes.js
const { Router, CustomCacheKey } = require('@layer0/core/router');
const { renderNuxtPage, nuxtRoutes } = require('@layer0/nuxt');
const proxyOrigin = ({
proxy,
...otherStuff
}) => {
proxy('legacy');
};
const router = new Router()
.get('/pages/single-page', ({ cache }) => cache(HTML)) // Route i want to return before proxy route
.use(nuxtRoutes) // ERROR, layer0 says this is fallback, but want to return the route here
.get('/pages/:slug*', proxyOrigin)
.fallback(res => {
proxyOrigin(res);
});
Is there a way to return a response in that first get to the Layer0 route I want? Maybe using redirect? Not sure…
Thank you for your help!
Using:
“@layer0/core”: “^3.10.0”,
“@layer0/nuxt”: “^3.10.0”,
“@layer0/prefetch”: “^3.10.0”,
EDIT: In the nuxtRoutes middleware docs it says:
You can add additional routes before and after
nuxtRoutes
, for example to send some URLs to an alternate backend. This is useful for gradually replacing an existing site with a new Nuxt.js app.
This is not the case in my experience. Using nuxtRoutes anywhere immediately before .fallback() triggers an error.