CSS文件上的ExpressJs 404

时间:2016-01-28 05:11:20

标签: css node.js express npm

所以我正在尝试学习如何使用expressJS和nodeJS,我正在遇到一个问题,当我启动服务器并加载html页面时,无法找到CSS文件(404错误)。 html页面加载正常,但是当我让服务器加载它时它没有样式。当我在没有服务器的情况下加载页面时,页面被设置为样式。这是我的快递和节点文件的代码:

var http = require('http'),
    express = require('express');
    app = express();

app.get('/', function(req,res){
    res.sendFile(__dirname + '/index.html');
});

app.use(express.static('public'));

app.listen(3000);

css的html链接是:

<link href="public/main.css" rel="stylesheet">

文件结构是

  • 前端(文件夹)

    • 的index.html
    • index.js

    • 公共(文件夹)

      • 的main.css

我做错了什么?我用Google搜索并查看了文档但到目前为止还没有找到问题。

2 个答案:

答案 0 :(得分:2)

您对static绑定的工作方式做出了错误的假设。以下说明:

app.use(express.static('public'));

告诉表示&#34; /上请求的没有明确路由绑定此应用的任何资源应通过文件系统解析;具体来说,应该在./public目录&#34;。

中查找它们

因此,如果有人要求/cats.git,并且表达式没有在您的应用中看到明确的路线绑定,那么它会检查./public目录相对于它的位置&#39 ; s正在运行,试图找到一个名为cats.gif的文件,如果能够找到它就返回它(如果它可以发送,则返回404)。

因此,你的文件系统中的dir与你网站的用户无关:他们只是简单地用干净的路径解决问题,所以如果你有一个你想要的文件./public/main.css要充当静态内容,那么您的CSS链接应该是:

<link href="main.css" rel="stylesheet">

然后express会看到/main.css的请求,它会注意到没有为它定义明确的路由,然后会尝试在静态目录中找到main.css 。它会找到./public/main.css,然后将其作为/main.css的回复发回。

答案 1 :(得分:0)

试试此代码

app.use(express.static(__dirname + '/public'));

HTML
<link href="main.css" rel="stylesheet">