#reactjs #react-router
Вопрос:
Я пытаюсь проложить маршрут по нескольким путям с помощью маршрутизатора react. Но он ведет только к корневому пути, а не к другим.
это код реакции:
function Routing() {
return (
<Router>
<div>
<App/>
<Switch>
<Route path = "/" exact component={App} />
<Route path = "/home" exact component={Home} />
</Switch>
</div>
</Router>
)
}
тем не менее, это дает мне: Не могу ДОБРАТЬСЯ /домой
После исследования в Интернете я увидел, что у нескольких людей была одна и та же проблема, одним из ответов stacoverflow для ее решения было использование этого кода на сервере.
app.get('*', function(req, res) {
res.render('..build/index');
});
и:
app.get('*', function(req, res) {
res.render('..public/index');
});
и:
app.get('*', function(req, res) {
res.render('index');
});
но это дает мне еще одну ошибку:
Error: No default engine was specified and no extension was provided.
at new View (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/view.js:61:11)
at Function.render (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/application.js:570:12)
at ServerResponse.render (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/response.js:1012:7)
at /Users/mhkhan4/Desktop/Books2Go/backend/server.js:17:7
at Layer.handle [as handle_request] (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/layer.js:95:5)
at /Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/index.js:281:22
at param (/Users/mhkhan4/Desktop/Books2Go/backend/node_modules/express/lib/router/index.js:354:14)
Ответ №1:
if(process.env.NODE_ENV=="production"){
app.use(express.static("client/build"))
const path=require('path')
app.get("*",(req,res)=>{
res.sendFile(path.resolve(__dirname,'client','build','index.html'))
})
}
Вы должны указать правильное имя каталога и используемое промежуточное программное обеспечение.Когда вы отправляете статические файлы, вы должны упомянуть, что они статичны