新手问题:node.js的writeHead方法导致我的代码停止运行

4

嗯,我对Node.js还不熟悉,所以请原谅我的问题。这是我的简单代码:

var http = require('http');
var fs = require('fs');

// simple node.js server

server = http.createServer(function (request, response){

var get_text = function (errors, contents){
    response.write(contents);
    response.end('hello world');
}
// get_text is the callback
fs.readFile('log.txt', get_text);
response.write('End of the callback');

response.writeHead(200);
});

server.listen(8000);

console.log('Server running at port 8000');

目前情况是,当我在终端中运行脚本时,服务器会正常启动但是在浏览器(Chrome)中访问我的localhost:8000时,会显示“网页不可用”。
如果我注释掉writeHead命令,它就能正常工作。
为什么?

2
writeHead 写入头部信息,并且必须在任何 write 调用之前被调用。 - SheetJS
1个回答

3
这是因为您试图在.write()后调用.writeHead():
response.write('End of the callback');

response.writeHead(200);

.writeHead() 必须放在最前面:

response.writeHead(200);
response.write('End of the callback\n');

太棒了,感谢你的帮助。目前来说,Node.js 对我来说有点晦涩,但我迟早会找到自己的路。 - JDillon522
@JDillon522 是的,Node.js旨在成为相当低级和技术性的。但这也是NPM与Node一起安装以及他们推广如此多的包/模块的原因。 - Jonathan Lonowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接