在NodeJS Express模块中,指定路径“/”将捕获多个HTTP请求,如“/”,“lib / main.js”,“images / icon.gif”等
var app = require('express')
app.use('/', authenticate);
在上面的示例中,如果authenticate
定义为
var authenticate = function(request, response, next) {
console.log("=> path = " + request.path);
next()
}
然后你会看到
=> path = /
=> path = /lib/main.js
=> path = /images/icon.gif
有人可以建议如何在Express“app.use”中定义仅捕获“/”的路径吗?
答案 0 :(得分:1)
如果您尝试公开静态文件,人们通常会将这些文件放在名为public/
的文件夹中。 express有一个名为static
的内置中间件来处理对该文件夹的所有请求。
var express = require('express')
var app = express();
app.use(express.static('./public'));
app.use('/', authenticate);
app.get('/home', function(req, res) {
res.send('Hello World');
});
现在,如果您公开放置images / css / javascript文件,您可以访问它们,就像public/
是根目录一样
<script src="http://localhost/lib/main.js"></script>
答案 1 :(得分:0)
据我了解,你需要做的是如果你有'/'&amp; '/ abc'你需要单独捕捉它。
这样可以解决问题:
app.use('/abc', abc);
app.use('/', authenticate);
表示首先注册/ abc中间件,然后执行/ middleware。
此解决方案也存在问题。这里我们只声明/ abc。因此,当用户调用未注册的路径时,它将在此处点击。 您可以在请求对象中使用originalUrl属性来确定其/仅或其他内容。以下是此文档:http://expressjs.com/en/api.html#req.originalUrl
if(req.originalUrl !== '/'){
res.status(404).send('Sorry, we cannot find that!');
}
else{
/*Do your stuff*/
}