仅使用NodeJS包含html,css和js文件

时间:2017-01-31 10:35:44

标签: javascript html css node.js

我基本上有一个Nodeserver.js文件和另外3个文件

1) index.html  -> '<path to Nodeserver.js>/public/index.html'
2) script.js   -> '<path to Nodeserver.js>/public/js/script.js'
3) sheet.css   -> '<path to Nodeserver.js>/public/css/sheet.css'

我的Nodeserver.js如下代码:

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

http.createServer(function (req, res) {
    console.log("Check 1");    
    if(req.url.indexOf('.html') != -1){ //req.url has the pathname, check if it conatins '.html'

      console.log("Entering HTML"); 
      fs.readFile(__dirname + '/public/index.html', function (err, data) {
        if (err) console.log(err);
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        res.end();
      });
    }

    if(req.url.indexOf('.css') != -1){ //req.url has the pathname, check if it conatins '.css'

    console.log("Entering CSS");  
      fs.readFile(__dirname + '/public/css/sheet.css', function (err, data) {
        if (err) console.log(err);
        res.writeHead(200, {'Content-Type': 'text/css'});
        res.write(data);
        res.end();
      });
    }

    if(req.url.indexOf('.js') != -1){ //req.url has the pathname, check if it conatins '.js'

      console.log("Entering JS");  
      fs.readFile(__dirname + '/public/js/script.js', function (err, data) {
        if (err) console.log(err);
        res.writeHead(200, {'Content-Type': 'text/javascript'});
        res.write(data);
        res.end();
      });
    }  

}).listen(8888, '0.0.0.0');
console.log('Server running at http://localhost:8888/');   

此代码应该显示我的HTML文档以及加载到其中的js,css文件。

但它没有这样做。

我试过删除if语句,即

if(req.url.indexOf('.html') != -1){ //req.url has the pathname, check if it conatins '.html'

在这种情况下我的html加载但我的css和js文件没有。 我也删除了那些if语句。 Node给出了一个错误:

Error: write after end
at ServerResponse.OutgoingMessage.write (_http_outgoing.js:439:15)
at C:\Users\<USER>\Documents\WORK\Node\Nodeserver.js:20:13
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:445:3)  

请帮忙。我想用js和css加载一个html文件,而不必使用NodeExpress。

这就是我在index.html中链接文件的方式

<link rel="stylesheet" type="text/css" href="css/sheet.css">
<script  type="text/javascript" src="js/script.js"></script>

0 个答案:

没有答案