用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() );
也许一些奇怪的事情发生,他试图评估代码