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 trialJonathan Leon
18,813 PointsError: write after end I get this error emitted after trying to add response.end() like in the video
var Profile = require("./profile.js");
var renderer = require("./renderer.js");
// handles the http route GET / POST i e home
function home(request,response) {
//if the url = "/ && GET "
if (request.url === "/") {
//show the search field
response.writeHead(200, {'Content-Type': 'text/plain'});
renderer.view("header" , {} , response);
renderer.view("search" , {} , response);
renderer.view("footer" , {} , response);
response.end();
}
//if the url = "// && POST "
//redirect to the username
}
//handles the http route get / username i.e /jonathanleo
function user(request,response) {
var username = request.url.replace("/", "");
//if the url = "//..."
if (username.length > 0 ) {
response.writeHead(200, {'Content-Type': 'text/plain'});
renderer.view("header" , {} , response);
response.end();
//get the JSOn from treehouse
var studentProfile = new Profile(username);
//on end
studentProfile.on("end", function(profileJSON){
//show the profile
//store the values which we need
var values = {
avatarUrl: profileJSON.gravatar_url ,
username: profileJSON.profile_name ,
badges: profileJSON.badges.length ,
javascriptPoints: profileJSON.points.JavaScript
}
//simple response
renderer.view("profile" , values , response);
renderer.view("footer" , {} , response);
response.end();
});
//on error
studentProfile.on("error", function(error) {
//show the error
renderer.view("error" , {errorMessage: error.message} , response);
renderer.view("search" , {} , response);
renderer.view("footer" , {} , response);
response.end();
});
}
};
module.exports.home = home;
module.exports.user = user;
Jonathan Leon
18,813 PointsOkay I figured it out, I had "response.end()" after these lines of code and that was the problem
if (username.length > 0 ) {
response.writeHead(200, {'Content-Type': 'text/plain'});
renderer.view("header" , {} , response);
can someone explain me why this function ran and username.length > 0 was true when my request was just the home page? isn't "".length = 0?
Eric Moody
12,373 PointsGlad you figured out the response.end(); issue.
about your secondary question about why .length > 0 evaluates to true for the home page.
Mine is doing the same thing. Were you able to figure it out? Were you running yours locally as I am?
Jonathan Leon
18,813 PointsJonathan Leon
18,813 PointsThat's my renderer file