about:debugging#workers
(正使用firefox
),发现即使服务器关闭,也有问题的serviceWorker服务于同一页面。显然它是从以前的运行中打开的。因为我不熟悉服务人员,所以这完全使我感到困惑。现在,我已经取消注册,就可以得到我期望的行为。由于我不确定如何配置服务工作者以防止将来发生此类问题,因此我对此帖子的回答一直未得到解决。我希望我的Express服务器始终为React应用提供服务,除非该路由正好是/foo
。
现在此示例 有效 :
const express = require("express")
const path = require("path")
const app = express()
const staticPath = path.join(__dirname, '/static')
const indexPath = path.join(staticPath, '/index.html')
app.get("/foo", (req, res) => res.send("foo"))
app.use("/", express.static(staticPath))
app.get("*", (req, res) => res.sendFile(indexPath))
app.listen(5000, () => console.log("Listening on port 5000"))
和文件夹结构如下:
├── index.js
└── static
└── index.html
但是当我实际上对我的文件夹结构是这样的真实服务器执行相同操作时:
.
├── config // create-react-app ejected config
├── react // subfolder containing react code
│ ├── build // output
│ │ ├── asset-manifest.json
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── static
│ │ ├── css
│ │ ├── js
│ │ └── media
│ └── src
│ ├── App.tsx
│ └── index.tsx
└── server // subfolder containing server code
├── build
│ └── dist
│ └── expressIndex.js // server code compiled to js
└── src
└── expressIndex.ts // original server code in typescript
和此明确代码:
import * as express from "express"
import * as path from "path"
const app = express()
const staticPath = path.join(__dirname, "../../../react/build")
const indexPath = path.join(staticPath, "/index.html")
app.get("/foo", (req, res) => res.send("foo"))
app.use("/", express.static(staticPath))
app.get("*", (req, res) => res.sendFile(indexPath))
const port = process.env.PORT || 5000
app.listen(port, () => console.log(`Express server listening on port ${port}`))
然后它只是 拒绝确认/foo
路线 。它总是发回index.html。
由于registerServiceWorker.js
,我认为这可能与本地缓存的资产有关,我从index.tsx
的反应和行为相同的状态中将其禁用。
我在做什么错了?