Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.Static不适用于子目录_Javascript_Node.js_Express - Fatal编程技术网

Javascript Express.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')}

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')});      //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">