使用fs.readFileSync()服务html文件失败

时间:2012-04-16 22:40:04

标签: javascript node.js

我有这段代码(https://gist.github.com/2402116):

server.get('/', function(request, response) {
 var k = fs.readFileSync('./index.html','utf8');
 response.send( k );
});

尝试阅读此文件:

https://gist.github.com/2402070

并且浏览器继续加载并且永远不会结束。

但如果我从html文件中删除所有js include工作正常。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您的current server implementation除了index.html对基本网址的请求({1}}提供服务外,不做任何事情。您需要编写更多代码/路由,以便在'/'中为js包含请求,即index.html'/app.js'中的各种js文件。

现在,要点中的路由实现非常粗糙,并且不支持url匹配的许多方面。原始代码显然只是为没有资源的单个页面站点展示了一个概念。您将看到很快就会使代码工作变得繁重,因为您将有效地为每个资源请求编写路由,例如

'/js/'

你最好看看已经存在的node.js url路由库(例如director)或者express等内部支持routing的网络框架(和静态文件服务)。

答案 1 :(得分:1)

完成向浏览器发送数据后,您需要response.end()

实际上,由于您要一次发送所有数据,因此只需将response.send(k)替换为response.end(k)即可。虽然不推荐这种方法。我强烈建议您异步读取文件并将其发送到客户端块。

另请参阅:http://nodejs.org/api/http.html#http_response_end_data_encoding

答案 2 :(得分:1)

在k上尝试.toString而不是发送.end

response.end( k.toString() ); 

也许有些奇怪的事情发生了,他试图评估代码