0

我刚开始使用 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 目录是根目录,那么 /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);
});

这很好地服务于文件。

正如我所说,我还在学习。

节点静态“API”不是很彻底,所以我恢复了上述路线。

谢谢。

4

4 回答 4

4

使用上面创建的服务器,您将为每个请求发送 HTML 文件的内容——即使请求是针对图像或 css 文件的。您必须检查传入的请求对象以查看用户要求的内容,然后发送适当的文件并设置适当的内容类型。

或者,您可以使用 Express http://expressjs.com让您的生活更轻松

Express 会为您处理大部分此类工作,包括静态文件服务器。

于 2012-10-24T17:32:50.713 回答
3

我的朋友,不要把自己的时间浪费在重新发明轮子上

使用据我所知非常舒适的Express框架,并且可以轻松处理这些事情。

于 2012-10-25T00:35:56.390 回答
0

If you must do it yourself (rather than use Express) you can this module to map most MIME types.

于 2014-04-18T07:04:45.797 回答
0

The problem is the content-type that you are returning. Take a look at this example for the most common content-types:

https://gist.github.com/2573391

于 2012-10-24T19:47:35.863 回答