繁体   English   中英

NodeJS Express 根路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM