有什么区别:
http.Server(function(req,res) {});
和
http.createServer(function(req,res) {});
解决方法
根据nodejs的源代码(下面的解析),createServer只是一个帮助程序来实例化一个服务器.
exports.Server = Server; exports.createServer = function(requestListener) { return new Server(requestListener); };
因此,您在原始问题中提到的两个代码段中唯一真正的区别是,您没有使用新的关键字.
为了清楚起见,Server构造函数如下(在2012-12-13之后):
function Server(requestListener) { if (!(this instanceof Server)) return new Server(requestListener); net.Server.call(this,{ allowHalfOpen: true }); if (requestListener) { this.addListener('request',requestListener); } // Similar option to this. Too lazy to write my own docs. // http://www.squid-cache.org/Doc/config/half_closed_clients/ // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F this.httpAllowHalfOpen = false; this.addListener('connection',connectionListener); this.addListener('clientError',function(err,conn) { conn.destroy(err); }); } util.inherits(Server,net.Server);