我刚开始使用node.js并且我正在尝试提供一个静态index.html文件,当然它会加载CSS,JS和图像。我试过通过使用fs.readFile和node-static的serveFile读取index.html文件。
两者都提供文件,但是它找不到包含的CSS,JS和图像。也许这是我错误的路径,但这是我的目录结构。
我使用了index.html文件中这些引用文件的相对路径。所以简单地说就是css / main.css。另外,如果他们需要相对于server.js文件,我做了../css/main.css。最后,如果路径必须是绝对的,并且index.html目录是root,那么/css/main.css。什么都没有加载。
我做错了什么?
var http = require('http'),
fs = require('fs');
fs.readFile('../index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8080);
});
这可以很好地提供文件。
正如我所说,我还在学习。
node-static'API'不是很彻底,所以我恢复了上面的路线。
感谢。
答案 0 :(得分:4)
使用您在上面创建的服务器,您将为每个请求发送HTML文件的内容 - 即使请求是针对图像或css文件的。您必须检查进入的请求对象以查看用户要求的内容,然后发送相应的文件并设置相应的内容类型。
或者,您可以让您的生活更轻松,并使用Express http://expressjs.com
Express会为您处理大部分内容,包括静态文件服务器。
答案 1 :(得分:3)
我的朋友,不要浪费你自己的时间重新发明轮子。
使用Express框架,据我所知,它非常舒服,并且可以轻松处理这些事情。
答案 2 :(得分:0)
问题是您要返回的内容类型。请查看此示例以了解最常见的内容类型:
答案 3 :(得分:0)
如果你必须自己做(而不是使用Express),你可以使用这个模块映射大多数MIME类型。