【问题标题】:Server side rendering with loadable components not working带有可加载组件的服务器端渲染不起作用
【发布时间】:2020-04-14 07:35:18
【问题描述】:

我已经尝试了一段时间,但无济于事,让我的配置适用于具有以下特征的应用程序:

  1. 打字稿
  2. 反应
  3. 使用可加载组件进行服务器端渲染
  4. 网页包

由于某种原因,本应查找在服务器端渲染期间使用的所有块的这个 sn-p 不起作用:

server.get("*", (req, res, next) => {
    const extractor = new ChunkExtractor({ statsFile });
    ...
    const tsx = extractor.collectChunks(
        <ChunkExtractorManager extractor={extractor}>
            <StaticRouter location={req.url}>
                <App data={data}/>
            </StaticRouter>
        </ChunkExtractorManager>
    );
    console.log(extractor.getScriptTags()); // prints server.js bundle but this isn't correct
});

它返回 server.js 包而不是所需的客户端/供应商包。我没有在此处发布所有代码,而是将所有代码推送到我在 github 上的分支:https://github.com/markdstevens/ssr-ts-react-webpack-boilerplate/tree/ssr-with-code-splitting

我一定是在 webpack 或 loadable-components 中缺少一些配置,但我到处寻找,似乎找不到问题。任何提示都将受到欢迎。谢谢!

【问题讨论】:

    标签: reactjs typescript loadable-component


    【解决方案1】:

    发现问题。在我的 webpack 配置中,我的服务器配置中有这个:

    import * as LoadablePlugin from '@loadable/webpack-plugin';
    ...
    {
      entry: './src/server/app.tsx',
      target: 'node',
      externals: [nodeExternals()],
      output: {
        filename: 'server.js',
      },
      plugins: [
        new LoadablePlugin()
      ]
    }
    

    我还必须将 LoadablePlugin 添加到我的客户端配置中,以便一切正常。

    【讨论】:

    • 我为我们的团队完成了超过 800 多个小时的 SSR 配置、代码拆分、路由、在服务器页面标题中渲染 react-dom 门户、仅客户端组件、redux服务器上的水合作用等等等等,我对现在使用 React 的 SSR 的人们的建议是使用 NextJS 并避免无数小时的头痛。
    • 我在桌面上使用 react 和 ssr 获得了大约 70-80 的性能分数。我的问题是我不能使用 renderToNodeStream 并且当我使用可加载组件时我会眨眼。这里是my post。如果我能提供帮助或者您是否对问题有所了解,请告诉我。我真的需要一些线索。
    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2017-11-05
    • 2016-10-16
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多