简体   繁体   中英

Express.js: How to serve one file for the default “/” route, then use express.static for the rest?

I have a basic express app and I want to serve one file (after performing some logic) for the default route of / .

Unfortunately I can't use

app.use(function (res, res, next){
    *logic here*
    res.sendFile(filepath);
}); 

express.static()

because that will intercept every request and send the filepath for every request.

Is there another way of doing this?

It's enough to check the URI part of url and if it's / then send file.

Check this:

app.use(function (req, res, next) { // first must be Your middleware
  if(req.path == '/') {
    return res.sendFile('some file');
  }

  next();
}); 

app.use(express.static('public'));  // and after it You can attach static middleware

or:

app.use(express.static('public'));

app.all('/', function (req, res) {
  res.sendFile(filePath);
});
var regexp = /^\/\w+/





app.use(function (req, res, next){
  if(!regexp.test(req.path)){
    res.sendFile(filepath);
 }  

}); 

express.static()

this may work comment your requirement

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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