loading...

Discussion on: A crash course on serverless-side rendering with Vue.js, Nuxt.js and AWS Lambda

Collapse
lewebsimple profile image
Pascal Martineau

I was having the same problem, but got it working with the following:

app.use((req, res) => setTimeout(() => nuxt.render(req, res), 0));

I have no idea why this works, I stole it from the jeehyukwon/nuxt-edge-serverless-template repository.

Collapse
pachiradig profile image
pachiraDIG

Can confirm this solution works. Install serverless-offline with npm i serverless-offline. Then in nuxt.js, just replace app.use(nuxt.render) with Pascal's code, above. Run the plugin with sls offline. Be sure to include the http in http://localhost:3000.

Collapse
svedova profile image
Savas Vedova

I believe it's safer if you wait till the renderer is ready. To do so, simply listen to the render:done hook. For instance something like should work:

app.use((req, res) => {
  nuxt.hook("render:done", () => {
    nuxt.render(req, res);
  });
});

setTimeout doesn't seem very reliable to me :) On my mac I had to wait around 60ms for instance.

Thread Thread
aphilippartd profile image
Alexis Philippart de Foy

The following works as well.

app.use(async (req, res) => {
  await nuxt.ready()
  nuxt.render(req, res)
})

With the nuxt.hook("render:done" () => {}) I was getting random 404 errors when deployed. nuxt.ready() did the trick for me!

Thread Thread
adnanrahic profile image
Adnan Rahić Author

Awesome of you to share this! Feel free to add a PR to the GitHub repo with this edit. 👌