Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Build a Simple Dynamic Site with Node.js Handling Routes in Node.js User Route

Alex Franklin
Alex Franklin
12,403 Points

ReferenceError: home is not defined

I am running everything locally through VSC and I am getting the following error when running $node getProfile.js:

ReferenceError: home is not defined
    at Object.<anonymous> (c:\Users\Alex Franklin\devProjects\treehouseProfileProject\treehouseIndex\getProfile.js:79:23)

I have the function "home" defined in the router.js file along with the function "user". Everything has been working perfectly up until this.. Is it the file structure or something else - I have been stuck for a long time.

Please can someone help me understand what I'm missing here?!

here is my getProfile.js code:

var router = require("./router.js");
const hostname = '127.0.0.1';
const port = 3000;
var http = require('http');

http.createServer(function (request, response) {
  router.home(request, response);
  router.user(request, response);
  //response.end('This IS the REAL END.\n');
}).listen(port,hostname);
  console.log(`Server running at http://${hostname}:${port}/`);
//port 1337 is "leet" & IP 127.0.0.1 is local machine you're on

module.exports.home = home;
module.exports.user = user;

here is my router.js code:

    function home(request, response){
            if(request.url === "/"){
            response.writeHead(200, {'Content-Type': 'text/plain'});
            response.write("Header\n");
            response.write("Empty Search Here\n");
            response.end('Footer\n');
            }
        };


            function user(request, response){
                //if url === "/..."
                var username = request.url.replace("/", "");
                if(username.length > 0){
                    response.writeHead(200, {'Content-Type': 'text/plain'});
                    response.write("Header\n");
                    response.write(username + "\n");
                    response.end('Footer\n');
                }
            };

1 Answer

In the video these two lines:

module.exports.home = home;
module.exports.user = user;

are at the end of router.js not getProfile.js.

Alex Franklin
Alex Franklin
12,403 Points

WOW. Yeah that was the problem for sure... (facepalm)