I had the same problem, so here's what I came up with. This is what my folder structure looked like when I ran node server.js
app/
index.html
server.js
After printing out the __dirname
path, I realized that the __dirname
path was where my server was running (app/
).
So, the answer to your question is this:
If your server.js
file is in the same folder as the files you are trying to render, then
app.use(express.static(__dirname + '/default.htm'));
should actually be
app.use(express.static(__dirname));
The only time you would want to use the original syntax that you had would be if you had a folder tree like so:
app/
index.html
server.js
where index.html
is in the app/
directory, whereas server.js
is in the root directory (i.e. the same level as the app/
directory).
Overall, your code could look like:
var express = require('express');
var app = express();
app.use(express.static(__dirname));
app.listen(process.env.PORT);