【问题标题】:node.js can't render headers after they are sent to the client errornode.js 在将标头发送到客户端后无法呈现标头错误
【发布时间】:2012-08-20 08:19:37
【问题描述】:

使用 node.js,这个错误困扰着我,我想这与快递有关:var app = express();http.createServer(app) ??有什么建议吗?

Listening to port 8000
Request / from 127.0.0.1 to localhost:8000

http.js:686
throw new Error('Can\'t render headers after they are sent to the client.'
      ^
Error: Can't render headers after they are sent to the client.

代码在这里:

var sys = require('sys'), 
http = require('http');

var express = require('express'),
    routes = require('./routes');

var app = express();
var _self = this;


var _routes = {
    '/' : function(request, response) {
        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write('hello world\n');
        response.end();
    },

    '/is_up' : function(request, response) {
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.write('ok');
        response.end();
    },
};

var _requestHandler = function(request, response) {
    console.log('Request '+request.url+' from '+request.connection.remoteAddress+' to '+request.headers.host);
    if(_routes[request.url] === undefined) {
        response.writeHead(404, {'Content-Type': 'text/plain'});
        response.write('not found\n');
        //response.end();
    } else {
        _routes[request.url].call(this, request, response);
    }
};

var _server = module.exports = http.createServer(app).
                    addListener('request', _requestHandler)
                    .listen(8000);
    console.log('Listening to port ' + "8000");

【问题讨论】:

  • _server 变量有什么用?
  • @Amberlamps:只是一个变量,考虑到以后可以用于socket.io例如

标签: javascript node.js express


【解决方案1】:

我认为问题出在您创建服务器的方式上。看起来您有两个处理程序,一个与另一个发生冲突。

在您的代码中,您将 Express 应用程序传递给它,而不是您的请求处理程序,然后使用您的请求处理程序添加一个侦听器。

把它改成这样:

var _server = http.createServer(_requestHandler); 
//_server.addListener('request', _requestHandler);
_server.listen(8000);
console.log('Listening to port ' + "8000");

【讨论】:

  • 感谢您的回复!那我应该在哪里传递我的 express 模块?
猜你喜欢
  • 2017-07-21
  • 2022-11-30
  • 2023-03-29
  • 2023-01-14
  • 2019-10-20
  • 1970-01-01
  • 2020-07-11
相关资源
最近更新 更多