CNode

expressjs可以动态设置静态目录吗?

问答
Wwtwei发布于11 年前最后回复11 年前7 回复5690 浏览0 收藏

现在好像是服务启动的时候就是设置静态目录,我的目录是在数据库里面查询出来的,所以想在执行查询后设置,这样写好像是没效果

app.use( token.urlVerify,  function(req, res, next){
    app.use(express.static(path.join(__dirname, 'views/' + global.theme)));
    next();
});
查看回复

回复 (7)

I
i5ting#1·11 年前

app对象找不到吧

W
wtwei#2·11 年前
引用 i5tingapp对象找不到吧

@i5ting 对象是可以找到的就是设置了没有效果 自豪地采用 CNodeJS ionic

I
i5ting#4·11 年前

实在不行,用http模块写一个也不用多久

B
bgdsh#5·11 年前

我试了一下,动态调用app.use的确是不行的。

D
dlutwuwei#6·11 年前

回调里app.use的时候,由于中间件还没入栈,所以不会生效,第二次访问的时候也不会生效,因为你的第一个static永远会拦截静态资源请求,相当于每来一个请求,你就新加一个中间件,正确的做法应该是修改原来的中间件,但是这样做有什么意义,增加程序负担?服务器启动的时候改变可以用环境变量啊

router.use(path, function mounted_app(req, res, next) {
      var orig = req.app;
      fn.handle(req, res, function (err) {
        req.__proto__ = orig.request;
        res.__proto__ = orig.response;
        next(err);
      });
    });
	```
	
参与回复
登录后即可参与回复。登录