나는 반응이 문제가되는 것 같아요.하지만 찾는 방법이나 수정 방법에 대한 단서가 없습니다. Warning: Did not expect server HTML to contain a <nav> in <div>
과 같은 오류가 발생합니다.경고 'href'가 일치하지 않습니다.
내가 말했듯이 도움이 될만한 특정 코드가 있다고 생각한다면 어디에서 봐야할지 모르겠다. 알려 주시면 게시 해 드리겠습니다. 그렇지 않으면 SSR을 수행하는 데 사용하는 코드를 게시 할 수 있습니다.
편집 : 정확한 오류 : Warning: Prop
HREF did not match. Server: "/profile/5a073dc44cb45b00125e5c82" Client: "profile/5a073dc44cb45b00125e5c82"
나는 클라이언트를 확인하고 그것이 <div>
에서 <nav>
와 다른 오류 등의 /
이 없다라고 확신하지 /profile/:id
있다 내 머리 속에 nav
이 있지만, "고정"하는 방법을 잘 모르겠습니다.
import React from 'react';
import { renderToString } from 'react-dom/server';
import { StaticRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { renderRoutes } from 'react-router-config';
import serialize from 'serialize-javascript';
import { Helmet } from 'react-helmet';
import { matchRoutes } from 'react-router-config';
import routes from './src/routes';
import createStore from './src/stores';
function handleRender(req, res) {
let initial = {};
if (req.vertexSession != null && req.vertexSession.user != null) {
initial.user = { currentUser: req.vertexSession.user };
}
const store = createStore.configure(initial); // create Store in order to get data from redux
const promises = matchRoutes(routes, req.path)
.map(({ route, match }) => {
// Matches the route and loads data if loadData function is there
return route.loadData
? route.loadData(store)
: route.loadDataWithMatch ? route.loadDataWithMatch(store, match) : null;
})
.map(promise => {
if (promise) {
return new Promise((resolve, reject) => {
promise.then(resolve).catch(resolve); // lets all data load even if route fails
});
}
});
Promise.all(promises).then(() => {
const context = {};
if (context.url) {
return res.redirect(301, context.url); // redirect for non auth users
}
if (context.notFound) {
res.status(404); // set status to 404 for unknown route
}
const content = renderToString(
<Provider store={store}>
<StaticRouter location={req.path} context={context}>
<div>{renderRoutes(routes)}</div>
</StaticRouter>
</Provider>
);
// console.log(store.getState());
const initialState = serialize(store.getState());
const helmet = Helmet.renderStatic();
res.render('index', { content, initialState, helmet });
});
}
module.exports = handleRender;
코드를 작성 했습니까? React가 오류의 위치를 정확히 알려주는지 어떻게 알 수 있습니까? –
@JosanIracheta 돕기 위해 약간의 수정을 추가했습니다. –