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