我在节点js中编写代码来渲染html文件。但是,浏览器仍会尝试加载文件,即使它已完全呈现。
var http = require('http');
var fs = require('fs');
var reqHandler = function (req, res) {
if (req.url == "/") {
res.writeHead(200, { 'Content-Type': 'text/html' });
fs.createReadStream('index.html').pipe(res);
}
};
http.createServer(reqHandler).listen(3000);
以上代码有什么问题?
我想我遇到了问题,但不知道如何解决这个问题。 index.html文件包含一个javascript文件。当我评论脚本标记时,浏览器正确加载了html文件。但是当包含脚本标记时,浏览器会被卡住。我认为浏览器需要javascript文件。如何发送javascript文件?
答案 0 :(得分:2)
您还需要处理JS文件的请求,以及任何其他"意外的"请求(如大多数浏览器会在引擎盖下请求的/favicon.ico
)发送回404(" Not Found" ):
var reqHandler = function (req, res) {
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/html' });
fs.createReadStream('index.html').pipe(res);
} else if (req.url === '/script.js') {
res.writeHead(200, { 'Content-Type': 'text/javascript' });
fs.createReadStream('script.js').pipe(res);
} else {
res.writeHead(404);
res.end();
}
};
显然,如果您想添加更多文件,这将变得相当繁琐,因此node-static
,serve-static
或甚至像Express这样的模块可能会很有用。