Локально работает нормально, но при запуске "npm run deploy" сайт возвращает 404.
У меня есть приложение React + TypeScript, в котором для реакции между страницами используется response-router-dom BrowserRouter.
Мне не хватает проблемы на страницах github с реагирующим маршрутизатором, поэтому я попытался добавить basename = {process.env.PUBLIC_URL}, изменить его на HashRouter и еще много других возможностей.
Я занимаюсь этим вопросом уже 7 часов подряд ... и, похоже, нет никаких ресурсов по этой конкретной проблеме для Typescript.
Может кто-нибудь, пожалуйста, помогите мне!
index.tsx
ReactDOM.render(
<AppRouter />,
document.getElementById('root') as HTMLElement
);
Router.tsx
export const AppRouter: React.StatelessComponent<{}> = () => {
return (
<BrowserRouter basename={process.env.PUBLIC_URL}>
<div>
<NavBar />
<Switch>
<Route exact={true} path='/' component={App} />
<Route exact={true} path='/' component={Notes} />
<Route exact={true} path='/About' component={About} />
</Switch>
</div>
</BrowserRouter>
);
Также пробовал Router.tsx
export const AppRouter: React.StatelessComponent<{}> = () => {
return (
<HashRouter>
<div>
<NavBar />
<Switch>
<Route exact={true} path='/' component={App} />
<Route exact={true} path='/' component={Notes} />
<Route exact={true} path='/About' component={About} />
</Switch>
</div>
</HashRouter>
);
NavBar.tsx
export const NavBar: React.StatelessComponent<{}> = () => {
return (
<div id='nav-bar'>
<AppBar position='static' color='default'>
<Toolbar>
<span id='navbar-title'>
<Typography variant='title' color='default'>
Keep
</Typography>
</span>
<Link to="/">
<Button size="large" color="primary" variant="text">Notes</Button>
</Link>
<Link to="/About">
<Button size="large" color="primary" variant="text">About</Button>
</Link>
</Toolbar>
</AppBar>
</div>
)
Спасибо, что прочитали.
РЕДАКТИРОВАТЬ ниже - это точный ответ об ошибке из веб-консоли при ошибке 404. Что-то о favicon, это может быть проблемой? Местоположение совершенно неверно
json469.github.io/:1 Refused to load the image 'https://json469.github.io/favicon.ico' because it violates the following Content Security Policy directive: "img-src data:".
Я также попытался отладить, распечатав process.env.PUBLIC_URL, однако он вернул пустую строку ...
EDIT2 ниже - это изменение, внесенное в Router.tsx, которое устранило проблему.
<HashRouter>
<div>
<NavBar />
<main>
<Switch>
<Route exact={true} path='/' component={App} />
<Route exact={true} path='/' component={Notes} />
<Route exact={true} path='/About' component={About} />
</Switch>
</main>
</div>
</HashRouter>