Экспресс, кажется, перенаправляет на «/» независимо от того, что - PullRequest
0 голосов
/ 23 февраля 2019

РЕДАКТИРОВАТЬ: Я открываю 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 реакции и все того же поведения.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...