首页 > 解决方案 > 在 nodeJS 上加载 html 页面直到键盘中断才会加载

问题描述

我是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 后页面才会加载。为什么是这样?

标签: javascriptnode.jsserverlocalhost

解决方案


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

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

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


推荐阅读