2

我有这个代码(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 包含的内容就可以了。

我究竟做错了什么?

4

3 回答 3

2

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

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

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

于 2012-04-16T22:57:51.520 回答
2

当前的服务器实现index.html除了服务于对基本 url 的请求之外什么都不做,即'/'. 您将需要编写进一步的代码/路由来为 js 中的请求提供服务index.html,即'/app.js'.ie 中的各种 js 文件'/js/'

现在,gist 中的路由实现相当粗糙,不支持 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 ),它具有对路由(和静态文件服务)的内置支持。

于 2012-04-16T23:12:54.140 回答
1

尝试.toStringk 并且不发送但是.end

response.end( k.toString() ); 

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

于 2012-04-16T23:00:25.317 回答