node.js请求处理程序不会调用一个函数

我正在采取node.js的第一步,遇到了一个问题,当试图路由请求我的服务器收到。 我在我的项目中有以下文件,都在同一级别的层次结构:

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; 

requestHandlers.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; 

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('./requestHandlers'); var handle = {}; handle["/"] = requestHandlers.start; handle["/start"] = requestHandlers.start; handle["/upload"] = requestHandlers.upload; server.start(router.route,handle); 

当我input我的浏览器的URL“localhot:8888 /开始”例如,我得到这个在控制台:

 Server has started. Request for /upload received About to route a request for/upload Request for /favicon.ico received About to route a request for/favicon.ico No request handler found for/favicon.ico 

但为什么要我看到console.log我期望从upload()start()函数?

谢谢!

这可能是因为你永远不会调用你的启动或上传function。 尝试在router.js中处理[pathname]之后添加一些括号,如下所示:

 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; 

希望这可以帮助。