`app.use(express.static`似乎无法工作,如果app - 是子应用程序

时间:2015-07-03 18:09:59

标签: javascript node.js express subapplication

我尝试做这样的事情:

var main = express();
main.use(express.static(path.resolve('./asset')));
main.route('someroute', someHandle);
var app = express();
app.use(express.static(path.resolve('./asset')));
app.route('someroute', someHandle);
main.use('/app', app);

资产/asset/someasset.js投放良好,但/app/asset/someasset.js未返回(404),路径已解析为正确的文件夹。

我尝试app.use('/app', express.static(path.resolve('./asset'))); - 不行,但main.use('/app', express.static(path.resolve('./asset'))); - 有效!

使用已安装的子应用程序express.static是否存在一些限制?

UPD:

我尝试使用http://expressjs.com/ru/4x/api.html#express app.mountPath中描述的挂载应用程序,期望快速安装的子应用程序的所有功能都应该在其中工作,并且因为我想知道的静态问题,我们想知道是否存在局限性这个用例?他们可能是什么?

2 个答案:

答案 0 :(得分:1)

您的用例看起来像是Express Router的一个很好的候选者,它是一个孤立的中间件和路由实例":

http://expressjs.com/4x/api.html#router

具体来说,请尝试替换

var app = express();

var app = express.Router();

答案 1 :(得分:1)

编辑:你对path.resolve的使用都是错误的。



documentMode



 在两种情况下都解析为同一个文件夹。中间件的安装点只影响url而不影响目录文件夹。按照下面的建议重写您的代码,一切都将按照宣传的

工作

我的猜测是express.static仍在原始路径上运行。所以试试这个



path.resolve('./asset')