DEV Community

Unable to navigate to pages in react (MERN app) which is deployed on Heroku

Deepika Sharma on July 05, 2021

I am working on a MERN app and it is working fine in localhost. Yesterday I hosted it in heroku and the API , UI are working fine. But I am unable...
Collapse
 
alizulfaqar profile image
Ali Zulfaqar

Hello, you can try referring to this video on how to deploy MERN with heroku. Hopefully it help you solve the problem you are facing
youtube.com/watch?v=71wSzpLyW9k&ab...

Collapse
 
deepikasharma5 profile image
Deepika Sharma

Sure I'lltry this and let you know

Collapse
 
deepikasharma5 profile image
Deepika Sharma

I think I did same as this video..but not working. If I add that app.get('*',(req,Res)) then I am getting mapping error.

Collapse
 
alizulfaqar profile image
Ali Zulfaqar • Edited

I think you are missing the build folder inside the client folder, perhaps you can try npm run build first and then redeploy it to heroku. Because your code is referring to build folder which is inside the client folder and i did not see build folder inside your client folder directory

if (process.env.NODE_ENV === 'production') {
  app.use(express.static('client/build'));
}
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
deepikasharma5 profile image
Deepika Sharma

No the buld folder is there. I just used .gitignore and added/build when pushing to GitHub. The app is running. Only think is I am able to see the home page and the API which is in home page.. I am unable to navigate to other pages.

Thread Thread
 
alizulfaqar profile image
Ali Zulfaqar

how about you add app.get("*") from my code

if (process.env.NODE_ENV === "production") {
  // Set static folder
  app.use(express.static("client/build"));

  app.get("*", (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  });
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
biomathcode profile image
Pratik sharma • Edited
if (process.env.NODE_ENV === 'production') {
  app.use(express.static('client/build'));
}
app.get('*', (request, response) => {
    response.sendFile(path.join(__dirname, 'client/build', 'index.html'));
});
Enter fullscreen mode Exit fullscreen mode

did you add this in your server ??

you can look here at the steps to do the same

github.com/accimeesterlin/mern-sta...

Hope it helps

Chill!!!

Collapse
 
deepikasharma5 profile image
Deepika Sharma

If you can , can you check whether my frontend mapping is correct? Because if I add the above code it is showing mapping error. But the code is completely working on local server.

And without the above code the home page and the mapping inside it are working fine. Only the navigation is not working.
(Actually I referred this person's YouTube video and deployed)

Collapse
 
deepikasharma5 profile image
Deepika Sharma

Yes when I add that I am getting the error as this.state.dates.map is not a function. (A mapping error)

Collapse
 
alifarhad profile image
Farhad Ali

I had the same issue. I fixed it the following way:

once you have built the react app with npm build command then you need to go to public directory and add a new file called:

_redirects

content of the file should be:

/* /index.html 200

you can check this in my repo:
github.com/ali-farhad/material-ui-...

Collapse
 
deepikasharma5 profile image
Deepika Sharma

That is aalo not working. Do I need to mention that file in somewhere?

Collapse
 
alifarhad profile image
Farhad Ali • Edited

no does not need to be mentioned anywhere. but again you have a MERN app. I had CRA app so that is why this solution might not apply to your project.

Thread Thread
 
deepikasharma5 profile image
Deepika Sharma

Oh may be that's the reason

Collapse
 
deepikasharma5 profile image
Deepika Sharma

Please someone help. I tried everything I can. Please give me some solutions.