This repository was archived by the owner on Apr 8, 2020. It is now read-only.
This repository was archived by the owner on Apr 8, 2020. It is now read-only.
How to do ssr for react-apollo #1253
Closed
Description
Hi all,
I try to do server side rendering apollo. I did update file boot-server.tsx to this:
import * as React from 'react';
import { ApolloClient, ApolloProvider, renderToStringWithData, createNetworkInterface } from 'react-apollo';
import { StaticRouter } from 'react-router-dom';
import { createServerRenderer, RenderResult } from 'aspnet-prerendering';
import { routes } from './routes';
import { renderToString } from 'react-dom/server';
export default createServerRenderer(params => {
return new Promise<RenderResult>((resolve, reject) => {
const basename = params.baseUrl.substring(0, params.baseUrl.length - 1);
const urlAfterBasename = params.url.substring(basename.length);
const networkInterface = createNetworkInterface({
uri: '/api/graphql',
});
const client = new ApolloClient({
ssrMode: true,
networkInterface
});
const routerContext: any = {};
const app = (
<ApolloProvider client={ client }>
<StaticRouter basename={ basename } context={ routerContext } location={ params.location.path } children={ routes } />
</ApolloProvider>
);
if (routerContext.url) {
resolve({ redirectUrl: routerContext.url });
return;
}
params.domainTasks.then(() => {
renderToStringWithData(app).then((content) => {
resolve({
html: content
});
});
}, reject);
});
});
but it got me this error:
An unhandled exception occurred while processing the request.
NodeInvocationException: Prerendering timed out after 30000ms because the boot function in 'ClientApp/dist/main-server' returned a promise that did not resolve or reject. Make sure that your boot function always resolves or rejects its promise. You can change the timeout value using the 'asp-prerender-timeout' tag helper.
can you help me what i have a bad?
thank for all help
Metadata
Metadata
Assignees
Labels
No labels