我基本上有一个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>