Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS文件上的ExpressJS404_Css_Node.js_Express_Npm - Fatal编程技术网

CSS文件上的ExpressJS404

CSS文件上的ExpressJS404,css,node.js,express,npm,Css,Node.js,Express,Npm,所以我试图学习如何使用expressJS和nodeJS,我遇到了一个问题,当我启动服务器并加载html页面时,无法找到CSS文件(404错误)。html页面可以很好地加载,但是当我让服务器加载它时,它没有被设置样式。当我在没有服务器的情况下加载页面时,页面将被设置样式。以下是我的express和node文件代码: var http = require('http'), express = require('express'); app = express(); app.get(

所以我试图学习如何使用expressJS和nodeJS,我遇到了一个问题,当我启动服务器并加载html页面时,无法找到CSS文件(404错误)。html页面可以很好地加载,但是当我让服务器加载它时,它没有被设置样式。当我在没有服务器的情况下加载页面时,页面将被设置样式。以下是我的express和node文件代码:

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
我做错了什么?我在谷歌上搜索并查看了文档,但到目前为止还没有找到问题所在。

试试这段代码

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

HTML
<link href="main.css" rel="stylesheet">
app.use(express.static(uu dirname+/public));
HTML
试试这段代码

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

HTML
<link href="main.css" rel="stylesheet">
app.use(express.static(uu dirname+/public));
HTML

您对
静态
绑定的工作原理做出了错误的假设。以下说明:

app.use(express.static('public'));
告诉express“在
/
上请求的、没有为此应用绑定显式路由的任何资源都应该通过文件系统进行解析;具体来说,应该在
/public
目录中查找它们”

因此,如果有人要求提供
/cats.git
,而express在您的应用程序中没有看到该文件的显式路由绑定,它将检查与其运行位置相关的
/public
目录,尝试查找名为
cats.gif
的文件,如果能够找到,则返回该文件(如果找不到,则发送404)

因此,文件系统中的dir与站点的用户无关:他们只是根据干净的路径解决问题,因此如果您有一个文件
/public/main.css
,您只想用作静态内容,那么您的css链接应该是:

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


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

的响应发送回去。您对
静态
绑定的工作原理做出了错误的假设。以下说明:

app.use(express.static('public'));
告诉express“在
/
上请求的、没有为此应用绑定显式路由的任何资源都应该通过文件系统进行解析;具体来说,应该在
/public
目录中查找它们”

因此,如果有人要求提供
/cats.git
,而express在您的应用程序中没有看到该文件的显式路由绑定,它将检查与其运行位置相关的
/public
目录,尝试查找名为
cats.gif
的文件,如果能够找到,则返回该文件(如果找不到,则发送404)

因此,文件系统中的dir与站点的用户无关:他们只是根据干净的路径解决问题,因此如果您有一个文件
/public/main.css
,您只想用作静态内容,那么您的css链接应该是:

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


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

的响应发送回来,只需用于此。这就是它的用途(我正在用它)。在代码第二行到最后一行。注意,请参阅我的答案。如果排序后仍然得到404,请确保该文件存在,并确保文件名与磁盘上的文件名完全相同。如果你有“Main.css”但链接到“Main.css”,那么这些文件就不是同一个文件了。这就是它的用途(我正在用它)。在代码第二行到最后一行。注意,请参阅我的答案。如果排序后仍然得到404,请确保该文件存在,并确保文件名与磁盘上的文件名完全相同。如果你有“Main.css”但链接到“Main.css”,那么这些文件就不一样了。检查你的代码,我甚至模仿你的代码并尝试了,仍然得到了404错误。检查你的代码,我甚至模仿你的代码并尝试了,仍然得到了404错误。