Ich baue eine NodeJS App Fluss verwenden, und ich brauche die Standard-Express-Anmerkung für Express $ Antrag zu verlängern anderen Bereichen aufzunehmen, die ich auf, wie .user und .session heften.erstreckt ausdrücklichen Wunsch Klasse im Flow
leider, wenn ich versuche, dies zu tun und Middleware erstellen, die diese neue Art der Anfrage akzeptiert, flippt ausfließen und ich bin nicht sicher, was ich falsch mache.
der ursprüngliche Code für Express von Flow typisierte ist:
declare class express$Request extends http$IncomingMessage mixins express$RequestResponseBase {
....
}
declare type express$Middleware =
((req: express$Request, res: express$Response, next: express$NextFunction) => mixed) |
((error: ?Error, req: express$Request, res: express$Response, next: express$NextFunction) => mixed);
so würde ich dachte, dass ich nur ausdrücklich $ Antrag verlängern und dann sollten alle meine Middleware mit den neuen Eigenschaften arbeiten, nicht wahr?
declare class web$Request extends express$Request {
user: any,
isAuthenticated(): boolean,
session: {
loginForwardUrl: ?string,
},
}
const authenticationMiddleware: express$Middleware = (
req: web$Request, res, next
): mixed => {
if (req.isAuthenticated()) {
return next();
}
req.session.loginForwardUrl = req.originalUrl;
return res.redirect('/auth/login/google');
}
leider ergibt sich der Super-Komplex Fehler:
function
This type is incompatible with
union: function type(s): web/src/index.js:113
Member 1:
function type: flow-typed/npm/express_v4.x.x.js:97
Error:
web$Request: web/src/index.js:114
This type is incompatible with the expected param type of
express$Request: flow-typed/npm/express_v4.x.x.js:97
Member 2:
function type: flow-typed/npm/express_v4.x.x.js:98
Error:
web$Request: web/src/index.js:114
This type is incompatible with an argument type of
null: flow-typed/npm/express_v4.x.x.js:98
kann jemand erklären, was hier vor sich geht und wie man es beheben?
danke!
oof, brutal - ich wünschte, dass Fluss dies besser unterstützen würde. Danke! – user358829