【问题标题】:Loading html page on nodeJS won't load until keyboard interrupt在 nodeJS 上加载 html 页面直到键盘中断才会加载
【发布时间】:2019-03-13 12:36:59
【问题描述】:

我是 nodeJS 的新手。我正在尝试将 index.html 页面加载到我的 8080 端口上并拥有以下内容:

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

var PORT = 8080;

function home(req, res) {
  if(req.url == '/'){
    fs.readFile('index.html', function read (err, data) {
      res.writeHead(200, {'Content-type' : 'text/html'});
      res.write(data);
      res.end();
  });
  }
};

var server = http.createServer(function (req, res) {
  home(req, res);
});

server.listen(PORT);

我在同一目录中有 3 个文件:index.html、style.css、server.js。我启动服务器,直到我按下 cntrl + c 后页面才会加载。这是为什么呢?

【问题讨论】:

  • 是的,你错过了res.end()。尽管我建议使用 express 而不是重新发明轮子。
  • 是的,我添加了 res.end() 页面仍然无法加载。
  • 使用上面的代码,包括res.end(),访问localhost:8080对我来说效果很好并显示index.html。

标签: javascript node.js server localhost


【解决方案1】:

您已将数据写入响应,但尚未完成响应。将 res.end(); 放在 res.write 函数之后。

没有这个,浏览器会一直等待来自服务器的更多数据。当您使用 Ctrl-C 关闭服务器时,服务器会关闭连接,并且浏览器会呈现它收到的内容。

如果您是 Node 新手,我建议您研究一下 Express 之类的东西,它会为您处理很多重要的事情,例如路由(哪些 URL 到哪些页面),并且会为您节省更多的 if 语句未来。

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多