2012-04-02 71 views
0

我想设置一个基本的node.js服务器,并得到一个错误,我无法弄清楚。我有4个文件:index.js,server.js,router.js,requestHandlers.js设置一个基本的node.js服务器

index.js

var server = require("./server"); 
var router = require("./router"); 
var requestHandlers = ("./requestHandlers"); 

var handle = {} 
handle["/"] = requestHandlers.start; 
handle["/start"] = requestHandlers.start; 
handle["/upload"] = requestHandlers.upload; 

server.start(router.route, handle); 

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"); // 2nd log-- works fine 

    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."); //1st log -- works fine 

}; 
exports.start = start; 

router.js

function route(handle, pathname) { 
    console.log("About to route a request for " + pathname); //3rd log -- works fine 
    console.log(handle); // THIS IS THE PROBLEM returns ---> { '/': undefined, '/start': undefined, '/upload': undefined } 
    console.log(pathname); //works fine -- returns "/" 
    console.log(typeof handle[pathname]); //undefined 
    if (typeof handle[pathname] === 'function') { 
     handle[pathname](); //never called because above evaluates to undefined 
    } 
    else { 
     console.log("No request handler found for " + pathname); 
    } 
} 

exports.route = route; 

requestHandlers.js // code never never got here

function start() { 
    console.log("Request handler 'start' was called") 
} 

function upload() { 
    console.log("Request handler 'upload' was called") 
} 

exports.start = start; 
exports.upload = upload; 

我已经完成了这100次,对它正在做的事情感到非常自信,所以希望只有一些我想念的小事情。谢谢!

+0

如何分享错误? – Hubro 2012-04-02 16:32:40

+0

我在错误代码的地方发表了评论。我的对象属性回来了,因为undefined – 2012-04-02 16:36:37

回答

7

我想你不小心忘记了动词(要求)。

var requestHandlers = require("./requestHandlers"); 
+0

我新的它是一个小东西。谢谢 – 2012-04-02 16:38:01

+1

@ nic-meiring如果这个答案解决了你的问题,请把它标记为正确答案 – Hubro 2012-04-02 16:44:43

+0

哎对不起。当它最初得到回答时,标记为正确为时尚早。现在标记了 – 2012-04-02 20:51:35