Javascript Express.Static不适用于子目录
static对于根目录中的任何视图都非常有效,但是当我添加一个子目录时,它就会崩溃Javascript Express.Static不适用于子目录,javascript,node.js,express,Javascript,Node.js,Express,static对于根目录中的任何视图都非常有效,但是当我添加一个子目录时,它就会崩溃 app.use(express.static(path.join(__dirname, 'public'))); 作品: //Homepage router.get('/', isAuthenticated, function (req, res, next) { res.render('index.hbs', {user: req.user, message:req.flash('message')}
app.use(express.static(path.join(__dirname, 'public')));
作品:
//Homepage
router.get('/', isAuthenticated, function (req, res, next) {
res.render('index.hbs', {user: req.user, message:req.flash('message')}); //add add'l data {title:'Express', addlData:'SomeData', layout:'layout'}
});
不起作用:
//Organization Profile
router.get('/orgprofile/:username', function(req,res,next){
User.findOne({username:req.params.username}, function(err,docs){
res.render('orgprofile.hbs',{orgdetails:docs});
});
});
我猜uu dirname会被更改为发出get
请求的任何目录,但我只想对所有静态请求使用root(/public)目录。使用这种方式:
app.use('/', express.static(__dirname + '/public'));
app.use('/orgprofile', express.static(__dirname + '/public'));
问题不是由express.static()表达式引起的。这可能是由于href值错误造成的。 express.static(): 参考:
<link rel="stylesheet" type="text/css" href="/stylesheets/main.css">
谢谢!它基本上是说“用(uuu dirname+“/public”)替换“/orgprofile”吗?是的,它将句柄上的所有请求都设置为从目录提供服务。否决,因为您必须为您拥有的每个子文件夹手动创建路由。嘿@WonderDog,答案基于express的限制。我知道这不是一个很好的解决方案。使用Express打开功能请求可能比对唯一的现有解决方案进行向下投票要好。\u dirname
不会因每个请求而更改。要解决此问题,请显示希望用作静态请求的URL以及希望静态请求来自的目录结构。而且,express.static()
与res.render()
调用无关,如果这是您的问题所在。这些是通过模板布局引擎进行的正常文件操作,而不是通过express.static()
所在的中间件代码路径。
<link rel="stylesheet" type="text/css" href="/stylesheets/main.css">