Javascript 异步返回Apollo客户端服务器上的空标记

Javascript 异步返回Apollo客户端服务器上的空标记,javascript,reactjs,apollo-client,server-side-rendering,react-helmet,Javascript,Reactjs,Apollo Client,Server Side Rendering,React Helmet,在服务器上,我试图使用react Helmet async从嵌套的子组件获取头盔元标记和标题标记,因为react Helmet不起作用。但这似乎也不起作用,我总是得到一个空的标题标记,没有返回任何元标记(它们都设置在子组件中) const helmetContext={}; 常量应用=( ); //遍历组件树并执行所有查询 getDataFromTree(应用程序)。然后(()=>{ const content=ReactDOMServer.renderToString(应用程序); const

在服务器上,我试图使用
react Helmet async
从嵌套的子组件获取头盔元标记和标题标记,因为
react Helmet
不起作用。但这似乎也不起作用,我总是得到一个空的标题标记,没有返回任何元标记(它们都设置在子组件中)

const helmetContext={};
常量应用=(
);
//遍历组件树并执行所有查询
getDataFromTree(应用程序)。然后(()=>{
const content=ReactDOMServer.renderToString(应用程序);
const state=client.extract();
const{helmet}=helmetContext;//始终为空
const html=ReactDOMServer.renderToString(
,
);
物质状态(200);
res.send(`${html}`);
res.end();
}).catch(e=>{
console.error('呈现错误:',e);
物质状态(500);
console.log(e.stack);
res.end(
`发生错误。:\n\n${
e、 堆叠
}`
);
});`

关于如何从子组件访问嵌套头盔标记的任何帮助。我正在使用
HelmetProvider
在客户端包装应用程序。它在客户机上工作得非常好,但在服务器上它不会从嵌套组件中拾取任何标记。我不是流式传输响应,这是一个简单的SSR设置。这有点违背了建立SSR的目的,因此我非常感谢您的帮助。谢谢

结果证明,这是由于组件根本无法渲染的一个无关问题造成的<代码>异步在正确加载内容的页面上运行良好。
const helmetContext = {};
    const app = (
      <ApolloProvider client={client}>
        <HelmetProvider context={helmetContext}>
          <Router location={req.url} context={staticContext}>
            <CookiesProvider cookies={req.universalCookies}>
                <App />
            </CookiesProvider>
          </Router>
        </HelmetProvider>
      </ApolloProvider>
    );

//Traverses Component tree and executes all queries
getDataFromTree(app).then(() => {
  const content = ReactDOMServer.renderToString(app);
  const state = client.extract();
  const { helmet } = helmetContext;   // This is always empty
  const html = ReactDOMServer.renderToString(
    <Html content={content} helmet={helmet} assets={assets} state={state} initData={initData}/>,
  );

  res.status(200);
  res.send(`<!doctype html>${html}`);
  res.end();

}).catch(e => {
  console.error('RENDERING ERROR:', e); 
  res.status(500);
  console.log(e.stack);
  res.end(
    `An error occurred.:\n\n${
      e.stack
    }`
  );
});`