Im new to node.js. I have server.js , router.js, index.js and requestHandler.js files in my project. i pass start or upload in url like below
http://localhost:8888/start
I get pathName from url and pass it to router.js in server like below:
server.js :
var http = require("http");
var url = require("url");
function start(route,handle){
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
route(handle,pathname);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
router.js :
function route(handle,pathname){
console.log("About to route a request for "+ pathname );
if(typeof handle[pathname]==='function'){
handle[pathname]();
}else{
console.log("No request handler found for "+pathname);
}
}
exports.route = route ;
index.js :
var server = require("./Server");
var router = require("./router");
var requestHandlers = require("./requestHandler");
var handle={}
handle["/"]=requestHandlers.start;
handle["/start"]=requestHandlers.start;
handle["/upload"]=requestHandlers.upload;
server.start(router.route,handle);
requestHandler.js :
function start(){
console.log("Request handler 'start' was called.");
}
function upload(){
console.log("Request handler 'upload' was called.");
}
exports.start=start;
exports.upload=upload;
I get wrong result :
PS C:\Program Files\nodejs> node ..\..\Users\private\Desktop\hello\index.js
Server has started.
Request for /start received.
About to route a request for /start
No request handler found for undefined
Request for /favicon.ico received.
About to route a request for /favicon.ico
No request handler found for undefined
Request for /favicon.ico received.
About to route a request for /favicon.ico
No request handler found for undefined
instead of this :
Server has started.
Request for /start received.
About to route a request for /start
Request handler 'start' was called.
what is the problem? any idea?
I tried your code on my machine (Mac OS X + v0.8.9). It works well. The console output is:
Server has started.
Request for /start received.
About to route a request for /start
Request handler 'start' was called.
Request for /favicon.ico received.
About to route a request for /favicon.ico
No request handler found for /favicon.ico
It's tricky why you encountered the error. Can you check you node version?
From the your log data, the problem is in the function route(handle,pathname) defined in router.js. The value of pathname is chanded from "/start" to be undefined. Maybe you need to debug this function to find out the reason.
I encountered this problem also. Seems like I hadn't saved server.js since the last edit.