问题 sailsjs v0.10表示customMiddleware未加载


任何人都可以告诉我如何加载customMiddleware,或任何获取快递应用程序的功能,在风帆v0.10?

过去,您可以在/config/express.js中使用以下内容:

customMiddleware: yourFunc(app){
  //do stuff including
  // app.use(myMiddleware)
}

在v0.10中不再调用express.js的这个成员 - 至少在默认情况下不是这样。你可以通过创建一个带有“sails new”的新应用程序并在config.express.customMiddleware中定义一个新函数来证明这一点。它不会开火。

有谁知道如何启用它?或者是否有另一个地方或配置选项,使我能够在启动时访问快递应用程序?


10415
2018-02-16 04:18


起源

如果它适用于您,您能否将提供的答案标记为已接受?仅供记录。 - marionebl
是的,我最近没有回到这里,对不起它花了我这么久! - Cort Fritz


答案:


您必须为其指定其他配置 config.express.costumMiddleware 安装。通过设置 config.middleware.custom 至 true 您启用以前Sails版本的此默认行为。

// config/express.js
module.exports.express = {
  middleware: {
    custom: true
  },

 customMiddleware: function(app){
    // express middleware here
 }
};

相关提交

a89a883c22

相关来源

帆/ LIB /钩/ HTTP / load.js


5
2018-02-16 04:23



仅供参考,这是无意识的行为,将在下一个补丁中修复,以便进行设置 custom:true 您的自定义中间件不再需要运行。但是把钥匙留在那里不会有任何不良影响,所以这个答案仍然有效! - sgress454
似乎不适用于v0.10 RC8。 - Isilmë O.


处理 customMiddleware 在Sails 0.10中略有变化。在版本0.10中,需要配置该方法 http 钩子(不是 express 钩子,如以前的版本)。

记住你的是非常重要的 sails.config.http.middleware.order 列表需要有 '$custom' 其中的中间件条目将触发自定义中间件功能运行。

因此,为了添加任何自定义初始化,您可以添加以下更改 /config/http.js 文件:

module.exports.http = {
    // ...
    customMiddleware: function(app) {
        // do something ...
    }
    // ...
}

或者,如果您想执行依赖于环境的自定义,例如,在生产中,您可以添加以下更改 /config/env/production.js

module.exports = {
    // ...
    http: {
        customMiddleware: function(app) {
            // do something in production environment
        }
    }
    // ...
}

我使用这种方法来启用 信任代理 快递旗帜。

例:

...
   http: {
    customMiddleware: function(app) {
        app.enable('trust proxy');
    }
  }
...

代码处理可以在Sails Github上找到: /sails/lib/hooks/http/middleware/load.js

顺便说一下,当在Sails 0.10中使用快速挂钩时,您将收到以下警告:

警告: sails.config.express 已弃用;使用 sails.config.http 代替。


6
2017-09-22 12:42



注意 customMiddleware  走了 module.exports.http, 不  module.exports.http.middleware。 - Steve Kehlet