我正在使用 Express 创建一个网站,当我尝试使用超过一层深度的路由时,我的静态文件都没有得到服务。例如,这是我正常工作的代码:
const express = require('express')
const app = express()
const port = 3000
app.use('/public', express.static(__dirname + '/public'))
app.get('/newSite', (req, res) => res.sendFile(__dirname + '/newSite.html') )
app.get('/organizations', (req, res) => res.sendFile(__dirname + '/organizations.html') )
app.listen(port, () => console.log(`listening on port ${port}!`))
我想对路径使用类似的东西:
app.get('/admin/organizations', (req, res) => res.sendFile(__dirname + '/organizations.html') )
我尝试摆弄 app.use
函数,因为我认为这就是我的问题所在,但到目前为止我还无法弄清楚。如何向任何路由提供静态文件?
编辑:这是相关的html
<html>
<head>
<link rel="stylesheet" type = "text/css" href = "./public/global.css"/>
<link rel="stylesheet" type = "text/css" href = "./public/organizations.css"/>
</head>
<body>
</body>
<script src = "public/jquery.js"> </script>
<script src = "public/organizations.js"> </script>
</html>
这与相对
路径有关。使用express
,使用绝对
路径更安全。
当你的路由进入一层深后,发送的html文件需要搜索向上一层来找到静态文件。 (您可以确认:../public/global.css
实际上会在您的路由/admin/organizations
中正确链接静态文件)
简单修复:使用绝对路径(注意它仅以 /
开头)
<link rel="stylesheet" type = "text/css" href = "/public/global.css"/>
我是一名优秀的程序员,十分优秀!