我使用express来构建web应用程序。我有路由或静态文件的问题。 我添加了对静态文件的引用:
app.use(express.static(path.join(__dirname, 'public')));
并设置路线:
app.use('/', routes);
app.use('/users', users);
app.use('/blog', blog);
在我的blog
路由器中:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('blog/index');
});
/* GET registration form. */
router.get('/registration', function(req, res) {
res.render('blog/registration');
});
module.exports = router;
所以我的问题:
当我转到/blog
我的静态文件加载正确(没有博客路径)。但是当我去/blog/registration
时,我得到错误(路径中有博客):
GET /blog/stylesheets/css/bootstrap.min.css registration:1
GET /blog/stylesheets/lib/og-component.css registration:1
GET /blog/stylesheets/lib/venobox.css registration:1
GET /blog/stylesheets/lib/zocial.css registration:1
GET /blog/stylesheets/lib/font-awesome.css registration:1
GET /blog/stylesheets/lib/animate.css registration:1
GET /blog/stylesheets/css/style.css registration:1
GET /blog/stylesheets/css/scheme/light-blue.css registration:1
GET /blog/js/lib/modernizr.custom.js registration:1
GET /blog/images/jssolutions-logo.png 404 (Not Found)
如何解决此问题:在路径中加载没有blog
的静态文件:
/stylesheets/css/bootstrap.min.css
答案 0 :(得分:2)
如果您的样式表和其他静态内容存储在/ public文件夹中,并且您已包含该语句:
app.use(express.static(path.join(__dirname, 'public')));
然后你的html应该是这样的:
<link href="/stylesheets/stylesheet.css" rel="stylesheet">
即使你在/ blog /内,也应该找到它们,否则你似乎正在使用相对路径。
答案 1 :(得分:2)
这与快递或static
无关,而是与您从网页引用静态文件的方式有关。具体来说,如果您的网址看起来像
<link href="stylesheets/stylesheet.css" rel="stylesheet" />
然后假设这些相对到当前URL根目录。例如,如果当前网址为/blog
,则根目录为/
,因此脚本将从/stylesheets/stylesheet.css
加载。因此,在您的方案中,如果网址为/blog/registration
,则根目录为/blog/
,因此脚本将从/blog/stylesheets/stylesheet.css
加载。
如果希望从网站根目录加载所有静态文件,则在开头放置正斜杠
<link href="/stylesheets/stylesheet.css" rel="stylesheet" />