[英]NodeJS Express Root Path
在 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” 中定义只捕获“/”的路径?
如果您尝试公开静态文件,人们通常会将它们放在名为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 中,您可以访问它们,就好像public/
是根目录一样
<script src="http://localhost/lib/main.js"></script>
据我了解,您需要做的是,如果您有 '/' & '/abc' ,则需要单独捕获它。
这将解决问题:
app.use('/abc', abc);
app.use('/', authenticate);
意思是先注册/abc中间件,再注册/中间件。
此解决方案也存在问题。 这里我们只声明了 /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*/
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.