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

我有这个代码( 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

浏览器不断加载,永不结束。

但是,如果我删除所有的js包括从html文件工作正常。

我究竟做错了什么?

您当前的服务器实现不会执行任何操作,只能为index.html请求基础url,即'/' 。 您将需要编写更多的代码/路由来为您的index.html包含的js请求提供服务,例如'/app.js''/js/'的各种js文件。

现在,要点中的路由实现是相当粗糙的,不支持url匹配的很多方面。 原始代码显然只是为没有资源的单个页面网站展示一个概念。 你会发现,让你的代码工作很快会变得很麻烦,因为你将不得不为每个资源请求写一个路由,例如

 server.get('/app.js', function(request, response) { var k = fs.readFileSync('./app.js','utf8'); response.send( k ); }); server.get('/js/jquery-1.7.2.js', function(request, response) { var k = fs.readFileSync('./js/jquery-1.7.2.js','utf8'); response.send( k ); }); etc... 

你最好查看一个已经存在的node.js url路由库(例如director )或者一个web内容(比如express) ,这个内置路由支持(和静态文件服务)。

一旦你完成发送数据到浏览器,你需要一个response.end()

实际上,因为你一次发送所有的数据,你可以用response.send(k)replaceresponse.end(k) 。 虽然不build议使用这种方法。 我强烈build议asynchronous读取文件,并逐块发送给客户端。

另见: http : //nodejs.org/api/http.html#http_response_end_data_encoding

尝试.toString k,不发送但.end

 response.end( k.toString() ); 

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