I\'m deploying a NodeJs application using Heroku. Everything works fine except a little issue serving static files.
I have the following configuration
I struggled with this for a while and had to revert to using /public (from /dist) as the static folder - works perfectly now
Apparently, as explain in this question: Heroku(Cedar) + Node + Express + Jade Client-side javascript files in subdirectory work locally with foreman+curl but not when pushed to Heroku, you can't use __dirname with Heroku.
The alternative seems to be:
// At the top of your web.js
process.env.PWD = process.cwd()// Then
app.use(express.static(process.env.PWD + '/htdocs'));
If none of these solutions worked, check my solution.
Make sure that the sub directories of your directory are added to your Git repository.
Finally I found the solution.
I solved that just adding the npm version in my package.json.
{
"name": "bla",
"version": "0.0.1",
"dependencies": {
"express": "3.2.6"
},
"engines": {
"node": "0.10.11",
"npm": "1.2.25"
}
}
In my case, I had a step in my build that was actually wiping out the /public
folder, and then adding back in a bundle.js and bundle.css.
So on my local I didn't see it, but when it was deployed to Heroku the assets were missing.
I solved the problem in my case by removing the public folder from the .gitignore file. I don't know what it was doing there.