【发布时间】:2021-08-03 20:07:52
【问题描述】:
我不知道如何准确解释这一点,但由于某种原因,CSS 不适用于带有 node.js 和 express 的某些路由。
例如,CSS 对路由“/feed”非常有效,但对于“/users/:username”则完全不适用,即使 HTML 文件链接到同一个 CSS 文件。
我注意到这不是第一次发生这种情况,我不知道为什么会发生这种情况。如果有人可以向我解释/指导我应该做的正确方向,那将不胜感激。
这是一个更好的例子:
索引路由(CSS 适用于此路由)
// @ROUTE: Home Route
// @DESCRIPTION: Renders the homepage
server.get('/', (req, res)=> {
filesDB.find({}).sort({createdAt: '-1'}).exec((err, data) => {
if(err) {
throw err
} else {
res.render('Home.ejs', {
pageTitle: "Feed :: ImgHub",
curSession: req.session,
images: data
})
}
})
})
/users/:username 路由(CSS 不适用于此路由)
// @ROUTE: User Route
// @DESCRIPTION: Renders all the posts that were uploaded by the selected user
server.get('/user/:username', (req, res)=> {
const username = req.params.username
filesDB.find({'uploader': username}).sort({createdAt: '-1'}).exec((err, data)=> {
if(err) {
throw err
} else {
res.render('User.ejs', {
pageTitle: `${username} :: ImgHub`,
curSession: req.session,
images: data
})
}
})
})
表达静态文件
server.use(express.static(__dirname + '/CSS'))
仅供参考:我在网站上的控制台日志中没有收到任何错误。
【问题讨论】:
-
在 app.use 中遵循这个约定会有所帮助吗?
app.use(express.static(path.join(__dirname, 'css')));该函数中的第二个参数必须是一个对象,我不确定 + 符号和 css 文件夹字符串是否可以这样工作。 -
您能说明您在 HTML 中包含 CSS 文件的位置和方式吗?例如,给定
/user/:username目录,您的 CSS 文件可能会尝试从/user/CSS/style.css包含在内。检查你的浏览器控制台,看看你的 CSS 文件试图从哪个路由中包含进来。
标签: javascript html css node.js express