【发布时间】:2014-06-20 17:59:50
【问题描述】:
我想使用节点 js 创建一个简单的 http 服务器,它会监听特定的端口。但我面临一个看起来像这样的错误:
/usr/local/lib/node_modules/express/lib/application.js:123
this._router.handle(req, res, function(err) {
^
TypeError: Cannot call method 'handle' of undefined
at Function.app.handle (/usr/local/lib/node_modules/express/lib/application.js:123:16)
at Server.app (/usr/local/lib/node_modules/express/lib/express.js:28:9)
at Manager.handleRequest (/home/node/node_modules/socket.io/lib/manager.js:565:28)
at Server.<anonymous> (/home/node/node_modules/socket.io/lib/manager.js:119:10)
at Server.EventEmitter.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2108:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
at Socket.socket.ondata (http.js:1966:22)
at TCP.onread (net.js:527:27)
下面是我写的代码:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
server.listen(1200);
最近只有我升级了node版本并表达如下:
表达@4.4.1 节点@0.10.28
请任何人解释错误在哪里?
【问题讨论】:
-
你没有显示整个代码,因为你的错误与socket.io有关
-
是的,通过再次查看错误,确实,问题与 socket.io 相关,正如@mpm 所提到的,但您的代码并未告知这一点。
-
为了您的信息,我已经提到了上面的完整代码。
-
使用 node.js 调试器并打开异常中断功能,当错误弹出时检查调用堆栈和变量——尤其是应该定义但没有定义的变量。你的开发操作系统是什么?
-
这不是 socket.io 问题。 socket.io 会自动劫持 http 请求,但这不是原因。原因是 express 没有明确的错误消息。至少从 express 版本 4.13.3 开始,此问题已得到修复。