css - CSS 文件上的 ExpressJs 404

标签 css node.js express npm

所以我正在尝试学习如何使用 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

    • 公共(public)(文件夹)

      • main.css

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

最佳答案

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

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

告诉 express “在 / 上请求的任何没有明确路由绑定(bind)到此应用程序的资源都应该通过文件系统解析;具体来说,应该在 ./public 中查找它们 目录”。

因此,如果有人请求 /cats.git,并且 express 在您的应用中没有看到明确的路由绑定(bind),它将检查 ./public 相对于其运行位置的目录,尝试查找名为 cats.gif 的文件,如果可以找到则返回它(如果找不到则发送 404)。

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

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

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

关于css - CSS 文件上的 ExpressJs 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35053312/

相关文章:

javascript - 自动调整字体大小以适应容器

node.js - 使用 Node.js 和 Socket.io 获取静态请求以将一些数据推送到客户端

javascript - 我应该编译到哪个版本的 JavaScript?

php - 显示从数据库到 Bootstrap 轮播的多个图像

html - 我的按钮不工作

json - 使用 Firebase Cloud Functions 部署/测试函数

javascript - 如何不在node.js 中发回对ajax post 调用的响应?

javascript - req.params.id 返回多个值?

node.js - 如何使用mongoose在mongodb中使用纬度和经度查找附近的点

javascript - JS 和 HTML 不同的 Footer Render