2013-06-22 79 views
3

Im新增了node.js。我的项目中有server.js,router.js,index.js和requestHandler.js文件。 我通过启动或上传的网址,如下所示Node.js参数没有正确传递给路由器

http://localhost:8888/start 

我从URL路径名,把它传递给router.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; 

路由器.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; 

我得到错误的结果:

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 

,而不是这样的:

Server has started. 
Request for /start received. 
About to route a request for /start 
Request handler 'start' was called. 

是什么问题?任何想法?

+0

我试过你的代码,它对我来说工作正常。 – user568109

+0

我无法找到我的系统出了什么问题 –

回答

1

我在我的机器上试过你的代码(Mac OS X + v0.8.9)。它运作良好。控制台输出是:

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 

这很棘手,为什么你遇到了错误。你能检查你的节点版本吗?

从您的日志数据中,问题出现在router.js中定义的函数route(handle,pathname)中。路径名的值从"/start"开始为undefined。也许你需要调试这个函数来找出原因。

0

我也遇到过这个问题。好像我从上次编辑以来没有保存server.js。