2014-04-16 1 views
5

Ho appena installato [email protected], [email protected], [email protected] e [email protected] (solo per essere sicuri). Ma ho ancora seguito errore durante l'esecuzione sails liftLa maggior parte del middleware (come compressa) non è più in bundle con Express

/Users/myuser/myproject/backend/node_modules/express/lib/express.js:89 
     throw new Error('Most middleware (like ' + name + ') is no longer bundle 
      ^
Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. 
    at Function.Object.defineProperty.get (/Users/myuser/myproject/backend/node_modules/express/lib/express.js:89:13) 
    at Object.module.exports.express.customMiddleware (/Users/myuser/myproject/backend/config/passport.js:127:20) 
    at Array.loadExpress [as 1] (/usr/local/lib/node_modules/sails/lib/express/index.js:162:25) 
    at listener (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:462:46) 
    at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:416:17 
    at Array.forEach (native) 
    at _each (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:32:24) 
    at Object.taskComplete (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:415:13) 
    at processImmediate [as _immediateCallback] (timers.js:330:15) 

Qualche idea perché?

risposta

3

Sails non supporta ufficialmente Express 4; c'è un motivo per cui la dipendenza Express in Sails package.json è set to an explicit version! Puoi utilizzare le altre risposte qui per provare a far funzionare la tua app Sails, ma sei da solo finché non aggiorniamo il core per utilizzare il nuovo Express.

Abbiamo in programma di contattare il team Express per cercare di sincronizzare meglio le pubblicazioni in futuro, ma al momento stiamo lavorando duramente per ottenere una versione stabile di Sails v0.10!

1

Express 4.0's middleware documentation says,

Come di 4.x, espressa dipende non più su Connect. Tutti i middleware precedentemente inclusi di Express sono ora in repository separati. Si prega di visualizzare the list of middleware. L'unico middleware incluso è ora express.static().

Quindi, è necessario includere esplicitamente tutti i middleware necessari nello package.json, come dipendenza. Vedere il link nel testo citato per conoscere le informazioni sul repository di tutti i middleware.

+0

Questo. L'elenco di middleware è a portata di mano. Altrimenti, la maggior parte del middleware di connessione è chiamata connect- o solo , il che rende più semplice lo swapping –

3

Non è sufficiente installare solo le dipendenze in espresso 4.0.

è ora necessario includerli nella tua app con

var compression = require('compression'); 

e quindi utilizzarlo.

C'è molto carino articolo qui: link
e anche qui: link

su come trattare con la migrazione da Expres 3.x.x a 4.x.x

0

https://github.com/expressjs/body-parser/issues/31 cambiare la vostra bodyParser() a app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true })) Forse avrai la risposta giusta. dalla versione express 3 alla 4, body parser non è in espresso, dovresti installarlo in modo indipendente. può aiutarti.