res.sendFile не отображается на стороне клиента - PullRequest
0 голосов
/ 20 февраля 2020
app.use(cors())

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

connectDB()

const PORT = process.env.PORT || 5000;
const server = app.listen(PORT, () => console.log(`Server running on port ${PORT}`))

const socketio = require('socket.io')
const io = socketio(server)
const questions = require('./api/questions')(io)

app.use('/api/users', users)
app.use('/api/posts', posts)
app.use('/api/questions', questions)

express.static(`${__dirname}/client/public`)


app.get('*', (req, res) => {
    console.log('here')
    res.sendFile('/client/public/index.html', { root: __dirname }, (err) => {
        if (err) {
            console.log(err)
            return res.json(err);
        }
        else {
            console.log('file sent')
        }
    })
}
)

файл stati c отправляется клиенту, но страница не загружается, кто-то может помочь? Я потратил на это много времени. Мне нужно отправлять файл index. html каждый раз, когда маршрут не определен, в основном, если введен URL-адрес и ни один маршрут не совпадает, тогда возвращается индекс. html и загружается маршрут на стороне клиента. Я подозреваю, что файл не отправляется клиенту, но на вкладке сети я вижу, что он получает ответ с индексом. html, маршрут не загружается. Приложите фотографию вкладки сети, пожалуйста, помогите мне решить эту проблему. Также каждый раз, когда запрос отправляется на сервер, я получаю «файл отправлен» в консоли. это нормально? Так как я иду по маршруту, который существует, я подумал, что это ненормально. Если я удаляю резервный маршрут на своем бэкэнд-сервере, ничего не меняется на вкладке интерфейса и сети.

class App extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <div className="App">
          <Navbar />



          <BrowserRouter>

            <Switch>
              <Route exact path='/' component={MainPage} />
              <Route exact path='/news' component={News} />
              <Route exact path='/login' component={Login}>
                {/* {localStorage.jwtToken ? <Redirect to='/dashboard' /> : <Login />} */}
              </Route>

              <PrivateRoute exact path='/createpost' component={CreatePost} />
              <Route exact path='/register' component={Signup} />
              <Route exact path='/housing' component={Housing} />
              <Route exact path='/housing/:title' component={PageLink} />
              <Route exact path='/forsale/:title' component={PageLink} />
              <Route exact path='/forsale' component={ForSale} />
              <PrivateRoute exact path='/dashboard' component={Dashboard} />
            </Switch>
          </BrowserRouter>



          <Footer />
        </div>
      </Provider>
    );
  }
}

export default App;

РЕДАКТИРОВАТЬ: как я подозревал, req.url возвращает /index.css я не знаю как ,

прокси не работает, когда URL вводится вручную или копируется. когда я изменяю URL на http://localhost: 5000 / localhost: 3000 / регистрация Он переходит на внутренний маршрут, но возвращает

> Server running on port 5000 [0] /localhost:3000/signup [0] file sent
> [0] /localhost:3000/index.css [0] file sent [0] Database Connected [0]
> URIError: Failed to decode param
> '/localhost:3000/%PUBLIC_URL%/manifest.json' [0]     at
> decodeURIComponent (<anonymous>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...