I'm deploying a NodeJs application using Heroku. Everything works fine except a little issue serving static files.
I have the following configuration
app.use(express.static(__dirname + '/htdocs'));
It works fine except when I try to serve static files located in sub folders.
www.example.com/bar.js // this serves the file /htdocs/bar.js
www.example.com/foo/bar.js // this can't find the file /htdocs/foo/bar.js
I forgot to say that on my local environment everything works fine, might be something with heroku but I can't find the reason. Did someone had this problem before? Solutions?
Thanks!
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"
}
}
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.
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