Я пытаюсь выполнить рендеринг на стороне сервера для клиента Apollo, используя сервер express. Но он продолжает выдавать мне ошибку типа. Цель, которую я пытаюсь достичь, - использовать StripAPI для обработки платежей, и когда нажимается ссылка для оформления заказа, я хочу, чтобы она обрабатывалась на бэкэнде, а не во внешнем.
Error">
import { ApolloProvider } from 'react-apollo';
import { ApolloClient } from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import React from 'react';
import { BrowserRouter } from 'react-router-dom'
import express from 'express';
import { StaticRouter } from 'react-router';
import { InMemoryCache } from "apollo-cache-inmemory";
import Layout from './routes/Layout';
// Note you don't have to use any particular http server, but
// we're using Express in this example
const app = new express();
const basePort=3010;
app.use((req, res) => {
const client = new ApolloClient({
ssrMode: true,
// Remember that this is the interface the SSR server will use to connect to the
// API server, so we need to ensure it isn't firewalled, etc
link: createHttpLink({
uri: 'http://localhost:3010',
credentials: 'same-origin',
headers: {
cookie: req.header('Cookie'),
},
}),
cache: new InMemoryCache(),
});
const context = {};
// The client-side App will instead use <BrowserRouter>
const App = (
<BrowserRouter>
<ApolloProvider client={client}>
<StaticRouter location={req.url} context={context}>
<Layout />
</StaticRouter>
</ApolloProvider>
</BrowserRouter>
);
// rendering code (see below)
});
app.listen(basePort, () => console.log( // eslint-disable-line no-console
`app Server is now running on http://localhost:${basePort}`
));