为什么我不能在Express'上使用Function.prototype.apply? app.use?

时间:2017-10-03 05:59:09

标签: javascript express

我刚注意到例如app.use.apply(null, ['/', f => f]);

将抛出TypeError

 TypeError: Cannot read property 'lazyrouter' of null
  at use (node_modules/express/lib/application.js:214:7)

假设我的快速应用程序实例已正确设置,我做错了什么?我认为这是正确的诚意吗? app.use([path], cb) http://expressjs.com/en/guide/using-middleware.html

2 个答案:

答案 0 :(得分:1)

grid会更改函数中的apply()。对于this app.use()直接指向this的实例,但是您设置了它到app,并且null上没有附加use个函数属性,因此会出错。

答案 1 :(得分:1)

当函数作为对象的方法被调用时,如在app.use([path], cb)中,在函数调用中,this关键字被绑定到对象。 apply的第一个参数是您要提供的this绑定,因此您需要编写app.use.apply(app, ['/', f => f]);