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
.