В serverMiddleware я добавляю к request данные, например:
export default function (req, res, next) {
...
req.newdata = data;
next();
}
В компоненте страницы я получаю эти данные и вывожу:
<template> {{ viewdata }}</template>
<script>
export default {
asyncData( {req} ) {
const { newdata } = req;
return {
viewdata: newdata,
}
}
}
</script>
Теперь проблема:
Если я перейду по ссылке на страницу, то выходит ошибка:
Cannot read property 'newdata' of undefined`
Но стоит мне обновить страницу - всё ок. Каждый раз при переходе через раутер - ошибка.
Код раутера, сделанный как мидлваря:
export default function ({ req, redirect }) {
if (!req) return;
const redirects = [
{
from: /^\/catalog-([\d]+)(\/?)(.*)$/,
to: '/catalog/$1/',
},
];
const redirect_object = redirects.find(r => {
return req.url.match(r.from);
});
if (redirect_object) {
const code = req.url.match(redirect_object.from)[1];
return redirect(308, redirect_object.to.replace('$1', code));
}
}
Ссылки на страницу делаются через NLink.
Примерно то же самое происходит у меня на главной, там тоже asyncData, но уже работа с process:
return { config: JSON.stringify(JSON.parse(process.env.nuxtEnvConfig), null, 4) };
И ошибка отличается:
Unexpected token u in JSON at position 0
Полагаю, они связаны.
пысы: запускается через сервер express, код стандартный:
const express = require('express');
const consola = require('consola');
const { Nuxt, Builder } = require('nuxt');
const app = express();
const config = require('../nuxt.config.js');
config.dev = process.env.NODE_ENV !== 'production';
async function start () {
const nuxt = new Nuxt(config);
const { host, port } = nuxt.options.server;
if (config.dev) {
const builder = new Builder(nuxt);
await builder.build();
} else {
await nuxt.ready();
}
app.use(nuxt.render);
app.listen({ port, host }, function () {
process.send('ready');
});
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true,
});
}
start();