我是node.js的新手,并且正在玩一些教程,偶然发现了一些重构问题。
我关注的教程链接在这里: http://www.tutorialspoint.com/nodejs/nodejs_web_module.htm
我决定拆分回调以使代码更具可读性,因此创建了一个文件阅读器方法和一个监视器'方法:
function monitor(request, response)
{
var pathname = url.parse(request.url).pathname;
fs.readFile(pathname.substr(1), reader() );
}
http.createServer(monitor()).listen(8080);
当我运行时,我收到以下错误:
var pathname = url.parse(request.url).pathname;
^
TypeError: Cannot read property 'url' of undefined
at monitor
显然这是一个类型问题。我正在考虑转换为http.incomingMessage,但我对javascript不够熟悉,我的网络搜索没有产生快速解决方案。
谢谢!
答案 0 :(得分:5)
你的问题在这一行:
http.createServer(monitor()).listen(8080);
应该是:
http.createServer(monitor).listen(8080);
原因是你想要将监视器功能作为回调传递,而不是调用它。在monitor
之后放置括号将调用不带参数的函数。当没有给函数赋予参数时,它们会取值undefined
,因此会出现错误。