当我仅将此路由与其他所有路由一起使用时,这些静态文件会很好地发挥作用:
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);
这产生了URL路由的问题。但是奇怪的是,
node.js
没有告诉我有关中间件“设置错误”的信息。 最佳答案
您的代码没有错,但是请记住,对不存在的内容的任何请求都将被您的get('/*',...)捕获。
这就是说,您在public_dir
上加载了/public
,这意味着如果public_dir
定义为public/website/
,则必须执行http://127.0.0.1:3000/public/application.js
才能访问位于/public/website/application.js
的文件