NodeJS - "This type of response MUST not have a body..."



我最近在用node.js编写web应用程序时遇到了一个非常有趣的问题。从本质上讲,我所做的只是向客户端提供index.html页面。

这是代码:

var http = require('http');
var url = require('url');
var fs = require('fs');
var util = require('util');
var server = http.createServer(function(req, res){
        var path = url.parse(req.url).pathname;
        if(path == '/'){
            console.log("LOADING INDEX...");
            openIndex(req, res);
            console.log("LOADING COMPLETE.")
        } else {
            res.write("Something went wrong...");
            res.end();
        }
    }
);
var openIndex = function(req, res){
    fs.readFile('./index.html', function(error, content){
        if(error){
            res.writeHead(500);
            res.end();
        }
        else{
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(content, 'utf-8');
        }
    });
}

我在index.html页面加载前后放了一些调试语句:"正在加载索引"";加载完成"

现在,我已经和我的Facebook朋友分享了我的服务器链接,这样他们就可以看到我的应用程序了。大多数时候,一切都正常工作,但偶尔我会遇到这样的错误:

正在加载索引。。。

这种类型的响应不能有正文。忽略传递到end()的数据。

刚才我还得到了:

正在加载索引。。。

这种类型的响应不能有正文。正在忽略write()调用。

这个过程从来不会让"加载完成"语句

我已经尝试过无数次(在不同的机器、浏览器、设备、操作系统版本上访问我的应用程序),但每次都能正常工作。我四处寻找其他有这个问题的人,似乎不知何故,一个身体正在做出GET反应?我不完全确定这意味着什么,也不完全确定如何修复我的代码以防止这种情况发生。此外,我不确定产生此错误的客户端看到了什么?他们能看到我的应用程序吗?(即,这些只是警告吗?就他们而言,一切都很好?)

如有任何帮助,我们将不胜感激。

Xaan

如果您只是使用静态index.html,为什么不使用express.static自动为其提供服务?

app.use("/index.html", express.static(__dirname + '/index.html'));

这将导致expressjs自动处理HEAD请求,这将解决您的问题。

相关内容

最新更新