当我只使用这条路线和其他所有路线时,那些静态文件很好用:
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
没有告诉我关于"设置不正确的问题"中间件。
答案 0 :(得分:4)
您的代码没有任何问题,但请记住,任何不存在的请求都会被您的get('/ *',...)捕获。
这就是说,您在public_dir
加载/public
,如果public_dir
被定义为public/website/
您必须http://127.0.0.1:3000/public/application.js
才能访问文件找到/public/website/application.js