Я изучаю узел и выражаю с помощью сокращения, где я хочу установить cookie после отображения страницы и хочу использовать обновленное состояние для настройки файла cookie, где я получив эту ошибку.Ошибка: не удается установить заголовки после их отправки в экспресс
Пожалуйста, помогите мне в получении ответов на следующие вопросы? 1) Сообщите мне, какой синтаксис я написал правильно или нет, а если нет, то что делать? 2) Как я могу настроить cookie на ответ после успешного рендеринга файла ejs?
router.get('/dashboard',isLoggedIn,(req, res) => {
store.dispatch(initialize(reduxOauthConfig))
.then(() => match({ routes: dashroutes, location: req.url }, (error, redirectLocation, renderProps) => {
if (redirectLocation) {
res.redirect(301, redirectLocation.pathname + redirectLocation.search);
} else if (error) {
res.status(500).send(error.message);
} else if (!renderProps) {
res.status(404).send('Not found');
} else {
loadOnServer({ ...renderProps, store })
.then(() => {
const componentHTML = ReactDOMServer.renderToString(
<Provider store={store}>
<ReduxAsyncConnect {...renderProps}/>
</Provider>
);
const initialState = store.getState();
res.render('dashboard.ejs', {
markup: componentHTML,
intialState:initialState
});
})
.then(html => {
// !!! IMPORTANT TO PERSIST SESSION IF JavaScript failed to load/initialize
res.cookie('authHeaders', JSON.stringify(getHeaders(store.getState())), { maxAge: now() * 0.001 + 14 * 24 * 3600 });
res.end(html);
})
.catch(err => {
console.log(err.stack);
res.end(err.message);
});
}
}));
});
Возможный дубликат [Ошибка: невозможно установить заголовки после их отправки клиенту] (http://stackoverflow.com/questions/7042340/error-cant-set-headers-after-they-are-sent -to-the-client) –
@JohnWeisz - Я бы не назвал это дураком этого. Здесь возникает вопрос: ПОЧЕМУ этот специальный код генерирует это сообщение об ошибке и что является нарушающим компонентом этого кода. В этом другом ответе ничего не говорится о том, что не так с этим конкретным кодом. – jfriend00
@ jfriend00 - Хотя я и согласен с вами, я также считаю, что в этом случае это сводится к вопросу вкуса и личных предпочтений, учитывая, что это классическая проблема программирования на стороне сервера, где понимание общего принципа за вопросом сам по себе является ответом: _no конструирование контента перед заголовками или использование выходной буферизации_. –