【问题标题】:`app.use(express.static` seems to not working if app - is subapplication`app.use(express.static` 如果应用程序 - 是子应用程序,则似乎不起作用
【发布时间】:2015-09-21 14:52:38
【问题描述】:

我尝试做这样的事情:

var main = express();
main.use(express.static(path.resolve('./asset')));
main.route('someroute', someHandle);
var app = express();
app.use(express.static(path.resolve('./asset')));
app.route('someroute', someHandle);
main.use('/app', app);

资产 /asset/someasset.js 服务良好,但 /app/asset/someasset.js 未返回 (404),路径解析为正确的文件夹。

我试过app.use('/app', express.static(path.resolve('./asset'))); - 不工作,但main.use('/app', express.static(path.resolve('./asset'))); - 工作!

express.static 与挂载的子应用一起使用是否有一些限制?

更新:

我尝试使用 http://expressjs.com/ru/4x/api.html#express app.mountPath 中描述的挂载应用程序,期望作为子应用程序快速挂载的所有功能都应该在其中工作,并且偶然发现静态问题我想知道这种使用是否有限制案子?它们可能是什么?

【问题讨论】:

  • 好吧,因为您正在使用一个 express 应用程序作为另一个 express 应用程序的中间件。我不工作。看看中间件:expressjs.com/guide/using-middleware.html
  • @Peyman,这是否意味着当使用 express 作为中间件时,它不能使用其他中间件?我没有找到您提供的链接
  • 这是一个好问题,我不知道,我想你也许可以,但我敢肯定的是你不能做 main.use('/app', app )。因为 app 是一个快速应用程序实例,而它应该是一个中间件。 express.static 是一个中间件。
  • 快递应用本身就是中间件,仅供参考@Peyman
  • 是的,我更新了问题

标签: javascript node.js express subapplication


【解决方案1】:

编辑:您对 path.resolve 的使用都是错误的。

path.resolve('./asset')
在这两种情况下都解析到同一个文件夹。中间件的挂载点只影响 url 而不是目录文件夹。按照下面的建议重写你的代码,一切都会像宣传的那样工作

我的猜测是 express.static 仍在原来的路径上运行。所以试试这个

var main = express();
main.use(express.static(path.resolve('./asset')));
main.route('someroute', someHandle);
var app = express();
app.use(express.static(path.resolve('./app/asset')));
app.route('someroute', someHandle);
main.use(app);

【讨论】:

  • 我试过了,id 没有帮助,但main.use(express.static(path.resolve('./app/asset'))); 确实有效。问题是为什么它不适用于子应用(app)
  • 这是你的问题吗?鉴于您的原始帖子,我认为这个答案是正确的(并且密切相关)。您可能还想查看__dirname“global”。
  • someasset.js 是否同时存在于 /asset 和 /app/asset 文件夹中?如果是这样,考虑到您的代码的排序方式,/asset 中的静态文件将首先匹配
【解决方案2】:

您的用例看起来很适合 Express Router,它是“中间件和路由的隔离实例”:

http://expressjs.com/4x/api.html#router

具体来说,尝试替换

var app = express();

var app = express.Router();

【讨论】:

猜你喜欢
  • 2019-11-29
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
相关资源
最近更新 更多