Sailsjs v0.10 express customMiddleware не загружается

Может ли кто-нибудь сказать мне, как загрузить customMiddleware или любую функцию, которая получает экспресс-приложение, в парусах v0.10?

В прошлом вы могли, внутри /config/express.js, иметь следующее:

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

Этот член express.js больше не вызывается в v0.10 - по крайней мере, не по умолчанию. Вы можете доказать это себе, создав новое приложение с "парусами new" и определив новую функцию в config.express.customMiddleware. Он не срабатывает.

Кто-нибудь знает, как включить это? Или есть другое место или вариант конфигурации, позволяющий мне получить доступ к экспресс-приходу при запуске?

Ответ 1

Вы должны указать дополнительную конфигурацию для config.express.costumMiddleware, которую нужно установить. Установив config.middleware.custom в true, вы включите это поведение по умолчанию предыдущих версий Sails.

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

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

Связанная фиксация

a89a883c22

Связанный источник

sails/lib/hooks/http/load.js

Ответ 2

Обработка customMiddleware слегка изменилась в Sails 0.10. В версии 0.10 этот метод должен быть настроен в http hook (не express hook, как в предыдущей версии).

Также очень важно помнить, что ваш список 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 вы получите следующее предупреждение:

warn: sails.config.express устарел; вместо этого используйте sails.config.http.