Вы должны убедиться, что в вашей конфигурации хостинга Firebase включены перезаписи, чтобы перенаправить все запросы в ваш файл index.html.Предполагается, что вы используете create-реагировать-приложение:
{
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers": [
{"source": "/service-worker.js", "headers": [{"key": "Cache-Control", "value": "no-cache"}]}
]
}
}
Команда init
для Firebase фактически предоставляет эту опцию при создании проекта.
Вам нужно будет повторно развернуть firebase deploy
для распространения изменений.
Обновление: С вышеупомянутой конфигурацией хоста firebase.json
следующих index.js
и App.js
я смог успешно развернуть create-react-app
срабочая react-router-dom
маршрутизация с использованием npm run build
с последующим firebase deploy
.
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { BrowserRouter as Router } from "react-router-dom";
ReactDOM.render(<Router><App /></Router>, document.getElementById('root'));
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
serviceWorker.unregister();
Приложение:
import React, { Component } from 'react';
import { Route, Link, Switch } from "react-router-dom";
import './App.css';
const Home = () => <h1>Home</h1>;
const Ok = () => <h1>Ok</h1>;
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/ok">Ok</Link></li>
</ul>
</header>
<main>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/ok" component={Ok} />
</Switch>
</main>
</div>
);
}
}
export default App;
Надеюсь, это поможет!