当前位置:  开发笔记 > 编程语言 > 正文

使用http.createServer的Node.js回调类型错误

如何解决《使用http.createServer的Node.js回调类型错误》经验,为你挑选了1个好方法。

我是node.js的新手,并且正在玩一些教程并偶然发现这个问题进行了一些重构.

我关注的教程链接在这里:http: //www.tutorialspoint.com/nodejs/nodejs_web_module.htm

我决定拆分回调以使代码更具可读性,因此创建了一个文件读取器方法和一个'monitor'方法:

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不够熟悉,我的网络搜索没有产生快速解决方案.

谢谢!



1> 小智..:

你的问题在于这一行:

http.createServer(monitor()).listen(8080);

它应该是:

http.createServer(monitor).listen(8080);

原因是你想要将监视器功能作为回调传递,而不是调用它.之后放置括号monitor将调用不带参数的函数.当没有给函数赋予参数时,它们会接受值undefined,因此会出现错误.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有