I have been struggling with this error for literally almost three weeks now, and it's honestly driving me crazy. I have been using Heroku to deploy my projects for over a year now, and I have never experienced any errors until I was going to release this new website of mine. You see, I currently have a mail server installed in my node project, called "index.js" while my full React project is in a folder called client.
Now, here is what's weird. My index.js looks like this:
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'));
});
}
But each time I push to Heroku, I get this error message in the console:
Error: ENOENT: no such file or directory, stat '/app/client/build/index.html'
I have also been trying to change and modify the directories in the path, to see if anything changes. I have also looked through what feels like the whole internet regarding a potential solution for this issue, without any luck. I would be extremely grateful if someone could at least point me in the right direction of what I seem to do wrong here.
Thanks in advance.
I just ran into the same issue. You need to add a heroku-postbuild
script in your package.json. I used create-react-app for my project, so if you didn't this line may differ a bit:
"heroku-postbuild": "cd client && npm install --only=dev && npm install && npm run build"
When I run npm run build
, create-react-app compiles a minified index.html file in the build/ folder, so you might need to modify the command if the build file you are pointing to lies elsewhere.
My server structure is like this:
server.js
client/
build/
public/
- index.html
src/
- index.js
I found the solution in this handy article
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With