NodeJs - 使用文件系统包含HTML文件

时间:2017-10-12 13:28:13

标签: javascript html node.js

我是网络编程的新手,并开始学习NodeJs。我创建了一个仅用于测试和学习的新项目。这是项目结构

Project

我的 Server.js 包含此代码

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

var server = http.createServer(function(req, res) {
  var page = url.parse(req.url).pathname;
  res.writeHead(200, {"Content-Type": "text/html"});

  fileSystem.readFile(getPage(page), null, function(error, data){
    if(error){
      throw error;
    } else {
      res.writeHead(data);
    }
    res.end();
  })
});
server.listen(2312);

function getPage(page){
  var content = "Templates/";
  switch (page) {
    case "/Page1":
        content += 'Page1.html';
        break;
    case "/Page2":
        content += 'Page2.html';
        break;
    case "/Page3":
        content += 'Page3.html';
        break;
    default:
        content += 'Page404.html';
    }
    return content;
}

我的 html文件包含非常简单的HTML代码

第1页

<!DOCTYPE html>
<html>

<head>
  <title></title>
  <link rel="stylesheet" href="Button.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
  <script src="Btns.js"></script>
</head>

<body>

  <button onclick="loadPage2()">Load Page 2</button>

  <button onclick="loadPage3()">Load Page 3</button>

</body>

</html>

因此,在尝试http://localhost:2312/Page1时,我收到无效的状态代码0。

  

_http_server.js:195       抛出新的RangeError(Invalid status code: ${statusCode});       ^

     

RangeError:无效的状态代码:0       在ServerResponse.writeHead(_http_server.js:195:11)       在... \ TestProjekt \ Server.js:13:9       在FSReqWrap.readFileAfterClose [as oncomplete](fs.js:439:3)

是否可以通过这种方式加载html文件?

我知道我可以使用 Express框架但我考虑学习并从本机代码开始。

2 个答案:

答案 0 :(得分:3)

res.writeHead(data);更改为res.write(data);

writeHead()向请求发送响应标头。

write()发送数据。

第一次调用response.write()时,它会将缓冲的头信息和正文的第一个块发送给客户端。第二次调用response.write()时,Node.js假设数据将被流式传输,并分别发送新数据。

答案 1 :(得分:0)

var readSream = fs.createReadStream(&#39; index.html&#39;,&#39; utf8&#39;)

readSream.pipe(响应);

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

  http.createServer(function(request, response) {  
    response.writeHeader(200, {"Content-Type": "text/html"});  
    var readSream = fs.createReadStream('index.html','utf8')
    readSream.pipe(response);
  }).listen(3000);

 console.log("server is running on port number ");