NodeJS Express根路径

时间:2016-04-21 02:00:20

标签: node.js express

在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”中定义仅捕获“/”的路径吗?

2 个答案:

答案 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*/
}