I'm using the tutorial found here: and added the following code.

// Module dependencies. var application_root = __dirname, express = require( 'express' ), //Web framework path = require( 'path' ), //Utilities for dealing with file paths mongoose = require( 'mongoose' ); //MongoDB integration //Create server var app = express(); // Configure server app.configure( function() { //parses request body and populates request.body app.use( express.bodyParser() ); //checks request.body for HTTP method overrides app.use( express.methodOverride() ); //perform route lookup based on url and HTTP method app.use( app.router ); //Where to serve static content app.use( express.static( path.join( application_root, 'site') ) ); //Show all errors in development app.use( express.errorHandler({ dumpExceptions: true, showStack: true })); }); //Start server var port = 5000; app.listen( port, function() { console.log( 'Express server listening on port %d in %s mode', port, app.settings.env ); }); 

After starting the server with node server.js I'm getting an error stating Cannot GET / when I access localhost:5000 and I just wondered if anyone knew much about this error as Express and Node are new to me?

5 Answers

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', {}); }); 
7

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.html package.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.html node_modules 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).

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 framework mongoose = require( 'mongoose' ); //MongoDB integration //Create server var app = express(); // Configure server app.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 here var port = 5000; app.listen( port, function() { console.log( 'Express server listening on port %d in %s mode', port, app.settings.env ); }); 

If you are getting this error, it could be because you don't have a route defined for your get.

For example:

const express = require('express'); const app = express(); app.get('/people', function (req, res) { res.send('hello'); }) app.listen(3000); --> this works --> this will output Cannot GET / message. 
1

Reason of the problem

Generally reason for such problem is that you forgot to use your router

So you need to call something like

app.use(router);

router in this case is nothing but express Router instance const router = Router();

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy