【问题标题】:How to serve different folders according the request in Express js?如何根据 Express js 中的请求提供不同的文件夹?
【发布时间】:2018-02-16 16:33:48
【问题描述】:

我真的不知道如何实现这样的工作

var express = require('express');
var app = express();
var server = require('http').createServer(app);

app.get('*', function(req, res){
  if(whateverYouDreamOf){
    res.redirect('http://www.subdomain.example.com');
  }else if(something){
    app.use(express.static(__dirname + '/app1'));
  }else{
    app.use(express.static(__dirname + '/app2'));
  }
} 

我需要根据很多参数提供不同的文件夹,但我被卡住了。所以一个可行的例子会很棒。

编辑

此示例无法使用 Mukesh Sharma 方法正确提供多个文件:

路径:

           example folder
         /       |       \
        /        |        \
       /         |         \
server.js | public folder | node_modules
            /    |    \
           /     |     \
          /      |      \
index.html | style.css | game.js        

HTML/CSS/JS:https://jsfiddle.net/gmye9er5/2/

服务器:

var express = require('express');
var app = express();
var server = require('http').createServer(app);

app.use('*', function(req, res, next){
   return express.static(__dirname + '/public')(req, res, next);
});

server.listen(3000, /*your IP*/);

【问题讨论】:

  • 此代码存在根本缺陷,因为您似乎正试图为一个用户或一个请求执行app.use(express.static(...)) 行为,但它根本不起作用。运行app.use(express.static(...)) 后,它将在服务器进程的剩余生命周期内对所有用户生效。我很怀疑这就是你想要的。
  • 所以,请备份并用文字解释您要完成的工作。
  • 另外,如果您向我们展示实际的 if 语句正在查看的内容,我们或许能够找到一种内置方法来执行您想要执行的操作。
  • 是的,我不想那样做。我想根据用户请求提供或不提供文件夹的所有文件,而不是单独发送每个文件。我正在寻找包装此文件夹中所有文件的最快方法。

标签: javascript node.js express


【解决方案1】:

希望这有用。

app.use('*', function(req, res, next){
   if(whateverYouDreamOf){
      res.redirect('http://www.subdomain.example.com');
   } else if(something){
      return express.static(__dirname + '/app1')(req, res, next);
   }else{
      return express.static(__dirname + '/app2')(req, res, next);
   }
});

【讨论】:

  • 抱歉耽搁了,我正在测试中
  • 难道express.static() 不期望next 参数并且不需要吗?
  • 我已接受您的回答,因为我忘记删除这一行 app.use(express.static(__dirname + '/app1'));在你的代码前面。现在我删除了它,它不能正确地提供文件。我可能在某个地方错了。我将继续进一步测试。如果还是不行,我会告诉你的。
  • 它对我来说很好用。如果您愿意,可以将next 传递给它。
  • 它适用于 app.use(express.static...,但使用你的代码我得到了一些文件,它在开发工具 i.imgur.com/JYPAg3H.png 和那些错误日志中生成了这个奇怪的树i.imgur.com/yLf47eG.png
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多