Node.js / Expess.js。 如果使用通配符路由器,静态路由器将无法识别

当我用所有其他路线只使用这条路线时,这个静态文件的效果很好:

var public_dir = path.join(__dirname, 'public'); app.use('/public', express.static(public_dir)); 

但是,当我在这些线下添加 – 所有的请求都赶上这个路由器(不是前一个):

 app.get('/*', function(req, res){ res.redirect('/#!' + req.path); }); 

这对我来说很奇怪,因为/public definition第一。 但是所有的请求都去了最后定义的/*请求处理程序。

现在,如果我尝试打开页面http://127.0.0.1:3000/public/website/application.js我将redirect到http://127.0.0.1:3000/#!/public/website/application.js 。 为什么会发生,以及如何以最好的方式解决这种情况?

万分感谢!


解决方法很简单。 我没有在中间件列表中工作的声明。

 app.use(app.router); 

这是一个URL路由的问题。 但奇怪的是, node.js没有告诉我有关中间件的“不正确的设置”。

你的代码没有任何问题,但是请记住,任何对不存在的东西的请求都会被get('/ *',…)所捕获。

这就是说,你加载public_dir /public这意味着如果public_dir被定义为public/website/你必须做的http://127.0.0.1:3000/public/application.js为了访问文件在/public/website/application.js