En node.js, ¿por qué la sesión de pasaporte impide que se formen eventos de “archivo”?

En mi aplicación solo estoy usando

app.use(express.json()); app.use(express.urlencoded()); 

y no

 app.use(express.bodyParser()); 

para que pueda analizar manualmente las cargas de archivos. Parece que esta linea

 app.use(passport.session()); 

deja de formidable para desencadenar eventos de archivo:

 form.on('file', function(name, file) { //never called }); 

¿Cómo puedo usar la sesión de pasaporte y no entrar en conflicto con un evento de archivo formidable?

Parece que han añadido una manera de solucionar este problema. Utilizando app.use(passport.session({pauseStream: true})); en cambio, evitará que las deserializaciones asíncronas rompan algún middleware.

Fuente: https://github.com/jaredhanson/passport/pull/106

El método passport.session() llama a su passport.deserializeUser() , que generalmente realiza una llamada a la base de datos para captar al usuario. Esta llamada a la base de datos demora la ejecución del código que comienza a escuchar los datos entrantes. Es decir, los datos llegan mientras nadie los escucha.