Cannot GET / Nodejs Error
I think you're missing your routes, you need to define at least one route for example '/' to index.
e.g.
app.get('/', function (req, res) { res.render('index', {});});
Have you checked your folder structure? It seems to me like Express can't find your root directory, which should be a a folder named "site" right under your default directory. Here is how it should look like, according to the tutorial:
node_modules/ .bin/ express/ mongoose/ path/site/ css/ img/ js/ index.htmlpackage.json
For example on my machine, I started getting the same error as you when I renamed my "site" folder as something else. So I would suggest you check that you have the index.html page inside a "site" folder that sits on the same path as your server.js file.
Hope that helps!
Much like leonardocsouza, I had the same problem. To clarify a bit, this is what my folder structure looked like when I ran node server.js
node_modules/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( path.join( application_root, 'site') ) );
should actually be
app.use(express.static(application_root));
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.htmlnode_modulesserver.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).
Side note: Intead of calling the path
utility, you can use the syntax application_root + 'site'
to join a path.
Overall, your code could look like:
// Module dependencies.var application_root = __dirname,express = require( 'express' ), //Web frameworkmongoose = require( 'mongoose' ); //MongoDB integration//Create servervar app = express();// Configure serverapp.configure( function() { //Don't change anything here... //Where to serve static content app.use( express.static( application_root ) ); //Nothing changes here either...});//Start server --- No changes made herevar port = 5000;app.listen( port, function() { console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );});