当我只使用这个路由时,其他所有路由的静态文件都能够被正确地提供。
但是当我添加以下这些代码——所有请求都会被该路由器(而不是之前的路由器)捕获:
对我来说很奇怪,因为
现在,如果我尝试打开页面
非常感谢!
解决方案很简单。我在中间件列表中有一条无效语句。
这会造成网址路由问题。但奇怪的是,
var public_dir = path.join(__dirname, 'public');
app.use('/public', express.static(public_dir));
但是当我添加以下这些代码——所有请求都会被该路由器(而不是之前的路由器)捕获:
app.get('/*', function(req, res){
res.redirect('/#!' + req.path);
});
对我来说很奇怪,因为
/public
的定义是最先的。但所有请求都会被最后一个定义的 /*
请求处理程序处理。现在,如果我尝试打开页面
http://127.0.0.1:3000/public/website/application.js
,我会被重定向到 http://127.0.0.1:3000/#!/public/website/application.js
。为什么会发生这种情况,如何以最好的方式解决这个问题?非常感谢!
解决方案很简单。我在中间件列表中有一条无效语句。
app.use(app.router);
这会造成网址路由问题。但奇怪的是,
node.js
没有告诉我中间件的“设置不正确”。
app.get('/*', ...)
语句之前,我使用了app.use('/public', ...)
。如果我删除app.get()
语句,那么我就可以看到我的静态文件。 - Anton Danilchenko