expressjs可以动态设置静态目录吗?
发布于 9 年前 作者 wtwei 4628 次浏览 最后一次编辑是 8 年前 来自 问答

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

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

app对象找不到吧

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

@wtwei 那你用类似的http-server呢

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

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

回调里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);
      });
    });
	```

@dlutwuwei 嗯,换了一种方式 自豪地采用 CNodeJS ionic

回到顶部