-
-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make serverMiddleware available when generating static pages #6648
Comments
The PR #6159 should also enable to have access to the |
Still not working for me. Downloaded the nuxt version 2.14 and set up the target property
The redirect file is not called in nuxt generate (while it works in nuxt dev)
|
This still doesn't work. |
I digged current implementation(v2.14.7) and it looks like serverMiddleware is enabled(by calling "nuxt.server.listen(0)") as #6648 (comment) said. The problem is we didn't have a way to know SEE: https://github.com/subuta/play-with-nuxt-generate // Custom module function, that keeps nuxt server instance's port to `process.env`
export default function () {
// SEE: https://github.com/nuxt/nuxt.js/issues/7597#issuecomment-652961387
this.nuxt.hook('listen', (server, listener) => {
// Keep nuxt server instance's listened port in `process.env`.
process.env.__NUXT_PORT__ = listener.port
})
// At custom plugin, inject `process.env.__NUXT_PORT__` value to asyncData's argument
this.addPlugin({
src: path.resolve(__dirname, './plugin.js'),
options: { getOrigin }
})
}
// asyncData function of each page.
async asyncData ({ $axios, $origin }) {
// Custom `$origin` helper(provided by custom plugin.js) will return
// `origin` value like this `http://localhost:${__NUXT_PORT__}`.
const articles = await $axios.$get(`${$origin()}/api/articles?_expand=author`)
return { articles }
}, |
What problem does this feature solve?
Some server side data APIs are provided as serverMiddleware. These middleware can be accessed both on client side and also on server side in
asyncData
when either runningnuxt start
ornuxt dev
. This is a quite convenient way to access data needed for pages inasyncData
.Unfortunately none of the serverMiddleware seems to be working during static generation when running
nuxt generate
.If the serverMiddleware were accessible during static file generation:
asyncData
could have access to the initial data. There was no need for providingpayload
in thegenerate
method innuxt.config.js
.I think currently the serverMiddleware are not used by design but I don't know the code enough to know why it is that way.
My current mitigation: start an API server on a different port in the
nuxt.config.js
. This works but feels unnecessary.What does the proposed changes look like?
The middleware in
serverMiddleware
are accessible during static generation.The text was updated successfully, but these errors were encountered: