![](/img/trans.png)
[英]Get php server to serve index.html for all routes using react + react-router-dom
[英]React-snapshot pre-renders index.html on all routes with create-react-app and serve
我正在使用 create-react-app 和 react-snapshot 进行预渲染。 使用 serve 服务构建
serve -s build -l 80
但奇怪的是,对于所有路由,只有 index.js 是预渲染的。
下面是package.json中的react-snapshot配置
"reactSnapshot": {
"exclude": [
"/districts-data",
"/districts-data?*",
"/suggest-time",
"/covid-19-statistics"
],
"snapshotDelay": 300
}
我已经排除了所有包含延迟加载的路径。 我已经完成了这个答案,但我没有在我的服务人员中发现任何东西,只是为 PWA 保留了它。
sw.js
self.addEventListener('fetch', function (event) {
});
self.addEventListener('install', function (event) {
});
self.addEventListener('activate', (event) => { });
在投入几天时间并深入研究serve
代码后,我意识到我犯的错误是在运行服务脚本时使用了 -s 选项。
serve -s build -l 80
使用 -s 选项默认从 index.html 提供的所有路由。如果您只是提供通过 Create react app 生成的构建,则使用 -s 标志是必不可少的,否则“/”以外的路由将返回响应 400。
如果您已预渲染所有路由,则可以简单地使用serve build
但如果有一些路由您没有预渲染 HTML 可用(对于我的用例,它是使用延迟加载的组件),那么您可以创建 serve .json 在指定源和目标的公用文件夹中。
{
"rewrites": [
{ "source": "/districts-data", "destination": "/200.html" },
{ "source": "/districts-data?*", "destination": "/200.html" },
{ "source": "/suggest-time", "destination": "/200.html" },
{ "source": "/covid-19-statistics", "destination": "/200.html" }
]
}
您还需要将服务命令更改为serve -c serve.json build
。 -c 用于告诉 Specify custom path to serve.json
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.