Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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

Alex Franklin
Alex Franklin
12,398 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,398 Points

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