reactjs - 带有可加载组件的服务器端渲染不起作用
问题描述
我已经尝试了一段时间,但无济于事,让我的配置适用于具有以下特征的应用程序:
- 打字稿
- 反应
- 使用可加载组件的服务器端渲染
- 网页包
出于某种原因,这个片段,它应该找到在服务器端渲染期间使用的所有块,它不起作用:
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 或可加载组件中缺少一些配置,但我到处寻找,似乎找不到问题。任何提示都将受到欢迎。谢谢!
解决方案
发现问题。在我的 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
为了让一切正常工作,我还必须将其添加到我的客户端配置中。
推荐阅读
- python - 如何使用 SymPy 在 Python 中查找导数
- java - 在放心的 API 测试中使用 queryParams 而不是 Json 主体
- macos - 解锁系统偏好设置不起作用
- jsf - p:selectOneMenu 值未在 bean 中设置
- c# - 直到按钮完成后,WPF 覆盖才会激活
- c++ - 用于测试的 Qt 正确项目结构
- angular - 有没有办法使用谷歌分析(Angular)跟踪用户在页面上花费的时间
- amazon-web-services - AWS:网络负载均衡器中的两个侦听器导致加载时间长
- oracle - ORACLE APEX:尝试将 LOGIN PAGE 自定义电子邮件插入到表中
- python - 如何使用用户名中包含特殊字符的用户运行命令行参数?