2014-02-16 8 views
10

Kann mir jemand sagen, wie man customMiddleware oder irgendeine Funktion, die die Express-App bekommt, in Segel v0.10 lädt?sailsjs v0.10 express customMiddleware wird nicht geladen

In der Vergangenheit konnte man innerhalb /config/express.js, hat die folgenden:

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

Dieses Mitglied von Express.js nicht mehr in v0.10 genannt - zumindest nicht standardmäßig aktiviert. Sie können dies selbst beweisen, indem Sie eine neue App mit "sails new" erstellen und eine neue Funktion in config.express.customMiddleware definieren. Es wird nicht schießen.

Weiß jemand, wie man das ermöglicht? Oder gibt es eine andere Stelle oder Konfigurationsoption, die es mir ermöglicht, beim Start auf die Express-App zuzugreifen?

+0

Können Sie die bereitgestellte Antwort als akzeptiert markieren, wenn es für Sie funktioniert? Nur für die Aufzeichnungen. – marionebl

+0

Ja, ich war in letzter Zeit nicht mehr hier, Entschuldigung, es hat so lange gedauert! –

Antwort

5

Sie müssen eine zusätzliche Konfiguration für config.express.costumMiddleware angeben, die installiert werden soll. Indem Sie config.middleware.custom auf true setzen, aktivieren Sie dieses Standardverhalten der vorherigen Sails-Versionen.

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

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

Related

a89a883c22

Related Quelle

sails/lib/hooks/http/load.js

+1

FYI Das ist ein unbeabsichtigtes Verhalten, das im nächsten Patch behoben wird, so dass die Einstellung "custom: true" für die Ausführung Ihrer benutzerdefinierten Middleware nicht mehr erforderlich ist. Aber wenn Sie diesen Schlüssel dort lassen, wird das keine negativen Auswirkungen haben, also ist diese Antwort immer noch gültig! – sgress454

+2

Scheint nicht funktioniert für v0.10 RC8. –

6

commit Handhabung des customMiddleware hat in Besegelung 0,10 leicht verändert. In Version 0.10 muss diese Methode in http Hook konfiguriert werden (nicht express Hook, wie in der vorherigen Version).

Es ist auch sehr wichtig, daran zu denken, dass Ihre sails.config.http.middleware.order Liste '$custom' Middleware-Eintrag darin haben muss, da dies benutzerdefinierte Middleware-Funktion auslösen wird.

Also, um jede kundenspezifische Initialisierung hinzufügen möchten, können Sie die folgende Änderung der /config/http.js Datei hinzufügen:

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

Alternativ, wenn Sie möchten, dass umgebungsabhängigen Anpassung auszuführen, sagen wir, in der Produktion, können Sie folgende Änderungen an der /config/env/production.js

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

hinzufügen verwende ich diesen Ansatz Vertrauen zu ermöglichen, Proxy Eilflagge.

Beispiel:

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

-Code Handhabung kann auf Sails Github zu finden: /sails/lib/hooks/http/middleware/load.js.

BTW, wenn in Sails 0,10 express Haken verwenden, erhalten Sie Warnung folgende:

warnen: sails.config.express ist veraltet; Verwenden Sie stattdessen sails.config.http.

+0

Beachten Sie, dass 'customMiddleware' [unter 'module.exports.http'] geht (https://github.com/balderdashy/sails/blob/master/lib/hooks/http/middleware/load.js#L23), * nicht * 'module.exports.http.middleware'. –