Мне нужно сделать редирект для SSR (Koa.js + React.js)
Если пользователь зашел на главную страницу со строкой запроса, например site.ru/?test, то нам нужно перенаправить site.ru
На localhost все работает нормально, но не работает тестовая или продвинутая версия (сбой и некоторые ошибки)
Можете ли вы проверить мои экраны, пожалуйста
введите описание изображения здесь
0|ssr-serv | 14-01-2019 10:07:42: { s: '' } 's'
0|ssr-serv | 14-01-2019 10:07:42: { s: '' } 's'
0|ssr-serv | 14-01-2019 10:07:42: Error: write EPIPE
0|ssr-serv | at _errnoException (util.js:1003:13)
0|ssr-serv | at WriteWrap.afterWrite (net.js:866:14
Итак, почему у меня ошибка EPIPE?
import Router from 'koa-router';
import get from 'lodash/get';
import 'colors';
import moment from 'moment';
import {
getOldTestament,
getNewTestament,
getReading,
getArticle,
getInterpretations,
getTranslates,
getSlider,
getMeta,
} from '../../libs/getData';
import checkReading from './checkReading';
import titleToVerseInReading from './titleToVerseInReading';
const router = new Router();
router.get('/', async (ctx, next) => {
let initialStore = {};
let directProps = {};
const { meta, headers } = ctx.locals;
let metaData = {};
// Redirect
console.log(ctx.request.query, ctx.request.querystring);
if (ctx.request.querystring && ctx.request.querystring !== 'auth-need') {
console.log(ctx.request.query, ctx.request.querystring);
ctx.redirect('/');
}
//
try {
const [
_oldTestament,
_newTestament,
_reading,
_article,
_interpretations,
_sliders,
_meta,
_translates,
] = await Promise.all([
getOldTestament(headers),
getNewTestament(headers),
getReading(headers),
getArticle(headers),
getInterpretations(headers),
getSlider(),
getMeta('main'),
getTranslates(headers),
]);
// TODO add to redux
// const { interpretations, pages } = get(_interpretations, 'data');
const { gospel_reading, apostolic_reading, morning_reading, more_reading, ...other } = get(
_reading,
'data.reading',
[],
);
const [
_gospel_reading,
_apostolic_reading,
_morning_reading,
_more_reading,
] = await Promise.all([
checkReading(gospel_reading),
checkReading(apostolic_reading),
checkReading(morning_reading),
checkReading(more_reading),
]);
metaData = get(_meta, 'data.meta', {});
initialStore = {
books: {
oldTestament: get(_oldTestament, 'data.books', []),
newTestament: get(_newTestament, 'data.books', []),
},
lid: {
data: {
reading: {
gospel_reading: titleToVerseInReading(gospel_reading, _gospel_reading),
apostolic_reading: titleToVerseInReading(apostolic_reading, _apostolic_reading),
morning_reading: titleToVerseInReading(morning_reading, _morning_reading),
more_reading: titleToVerseInReading(more_reading, _more_reading),
...other,
},
},
},
// article: { article },
translates: { translates: get(_translates, 'data.translates', []) },
};
directProps = {
latestNewsList: get(_article, 'data.article', []),
latestInterpretationsList: get(_interpretations, 'data.interpretations', []).map(inter => ({
id: inter.id,
username: inter.added_by.username,
date: moment
.unix(inter.added_at)
.locale('ru')
.format('DD MMM YYYY'),
verse: inter.verse[0],
author: get(inter, 'ekzeget.name', ''),
authorId: get(inter, 'ekzeget.id', 0),
investigated: inter.investigated,
})),
latestInterpretationsTotal: get(_interpretations, 'data.pages.totalCount', 0),
latestSlider: get(_sliders, 'data', {}),
};
} catch (error) {
console.error(error);
}
const { title, description } = metaData;
meta.push({
name: 'description',
content: description,
});
ctx.locals = {
initialStore,
meta,
directProps,
title,
};
await next();
});
export default router;