@types/passport版本1.0.5生成新错误:类型验证器不满足约束IncomingMessage 我有一个KOA.JS Web应用程序,它使用PasPr.js进行OAuth2身份验证。此web应用程序是用typescript编写的。以下是身份验证代码: import { deserializeUser, serializeUser, use } from 'koa-passport'; import { Strategy, VerifyCallback } from 'passport-oauth2'; import config from 'config'; import { Authenticator } from 'passport'; const OAuth2Strategy = Strategy; use( new OAuth2Strategy( config.get('oauth2'), (accessToken: string, refreshToken: string, profile: any, done: VerifyCallback): void => { if (accessToken && refreshToken) { const tokens = { access_token: accessToken, refresh_token: refreshToken }; done(null, tokens); } else { done(undefined, undefined, { message: 'An error occurred!' }); } } ) ); serializeUser<Authenticator, Authenticator>( (user: Authenticator, done: (err: any, id?: Authenticator | undefined) => void): void => { done(null, user); } ); 从“koa passport”导入{反序列化用户,序列化用户,使用}; 从“passport-oauth2”导入{Strategy,VerifyCallback}; 从“配置”导入配置; 从“passport”导入{Authenticator}; const OAuth2Strategy=策略; 使用( 新OAuth2策略( config.get('oauth2'), (accessToken:string,refreshToken:string,profile:any,done:VerifyCallback):void=> { if(accessToken&&refreshToken){ const-tokens={access\u-token:accessToken,refresh\u-token:refreshttoken}; 完成(空,令牌); }否则{ 完成(未定义,未定义,{message:'发生错误!'}); } } ) ); 序列化用户( (用户:验证器,完成:(错误:有,id?:验证器|未定义)=>void):void=>{ 完成(空,用户); } );

@types/passport版本1.0.5生成新错误:类型验证器不满足约束IncomingMessage 我有一个KOA.JS Web应用程序,它使用PasPr.js进行OAuth2身份验证。此web应用程序是用typescript编写的。以下是身份验证代码: import { deserializeUser, serializeUser, use } from 'koa-passport'; import { Strategy, VerifyCallback } from 'passport-oauth2'; import config from 'config'; import { Authenticator } from 'passport'; const OAuth2Strategy = Strategy; use( new OAuth2Strategy( config.get('oauth2'), (accessToken: string, refreshToken: string, profile: any, done: VerifyCallback): void => { if (accessToken && refreshToken) { const tokens = { access_token: accessToken, refresh_token: refreshToken }; done(null, tokens); } else { done(undefined, undefined, { message: 'An error occurred!' }); } } ) ); serializeUser<Authenticator, Authenticator>( (user: Authenticator, done: (err: any, id?: Authenticator | undefined) => void): void => { done(null, user); } ); 从“koa passport”导入{反序列化用户,序列化用户,使用}; 从“passport-oauth2”导入{Strategy,VerifyCallback}; 从“配置”导入配置; 从“passport”导入{Authenticator}; const OAuth2Strategy=策略; 使用( 新OAuth2策略( config.get('oauth2'), (accessToken:string,refreshToken:string,profile:any,done:VerifyCallback):void=> { if(accessToken&&refreshToken){ const-tokens={access\u-token:accessToken,refresh\u-token:refreshttoken}; 完成(空,令牌); }否则{ 完成(未定义,未定义,{message:'发生错误!'}); } } ) ); 序列化用户( (用户:验证器,完成:(错误:有,id?:验证器|未定义)=>void):void=>{ 完成(空,用户); } );,typescript,passport.js,koa,koa-passport,Typescript,Passport.js,Koa,Koa Passport,web应用程序可以使用@types/passport 1.0.4进行编译,但是当我将@types/passport的版本升级到1.0.5时,会生成新的错误 Type 'Authenticator<Handler, any, any, AuthenticateOptions>' does not satisfy the constraint 'IncomingMessage'. Type 'Authenticator<Handler, any, any, Authenticate

web应用程序可以使用@types/passport 1.0.4进行编译,但是当我将@types/passport的版本升级到1.0.5时,会生成新的错误

Type 'Authenticator<Handler, any, any, AuthenticateOptions>' does not satisfy the constraint 'IncomingMessage'.
Type 'Authenticator<Handler, any, any, AuthenticateOptions>' is missing the following properties from type 'IncomingMessage': aborted, httpVersion, httpVersionMajor, httpVersionMinor, and 45 more.

serializeUser<Authenticator, Authenticator>
类型“Authenticator”不满足约束“IncomingMessage”。
类型“Authenticator”缺少类型“IncomingMessage”中的以下属性:中止、httpVersion、httpVersionMajor、httpVersionMinor等。
序列化用户

有人经历过这种情况吗?

可能是验证器接口发生了变化? 你说什么!? 是-仅对版本号进行了微小更改的界面更改

我希望koa passport的用户界面可能与passport的更新不同步。。。在我的世界里,对接口的重大更改通常意味着重大的版本更改

如下所示,Passport的V1.0.4允许使用通用TUser

序列化用户(fn:(用户:TUser,done:(err:any,id?:TID)=>void)=>void):void

现在,passport的V1.0.5版本将界面更改为限制为Express.User。
序列化用户(fn:(用户:Express.user,done:(err:any,id?:TID)=>void)=>void):void

验证器接口是否有变化? 你说什么!? 是-仅对版本号进行了微小更改的界面更改

我希望koa passport的用户界面可能与passport的更新不同步。。。在我的世界里,对接口的重大更改通常意味着重大的版本更改

如下所示,Passport的V1.0.4允许使用通用TUser

序列化用户(fn:(用户:TUser,done:(err:any,id?:TID)=>void)=>void):void

现在,passport的V1.0.5版本将界面更改为限制为Express.User。
序列化用户(fn:(用户:Express.user,done:(err:any,id?:TID)=>void)=>void):void

不要显式地传递类型参数。感谢@AluanHaddad的及时回复。它有助于删除类型参数。但是,我现在收到一个新错误:
(参数)user:Express。类型为“user”的用户参数不能分配给类型为“Authenticator”的参数。类型“User”缺少类型“Authenticator”中的以下属性:。ts(2345)
这里是新代码:
serializeUser((用户:Express.user,done:(err:any,id?:Authenticator | undefined)=>void):void=>{done(null,user);})不要显式传递类型参数。感谢@AluanHaddad的及时回复。它有助于删除类型参数。但是,我现在收到一个新错误:
(参数)user:Express。类型为“user”的用户参数不能分配给类型为“Authenticator”的参数。类型“User”缺少类型“Authenticator”中的以下属性:。ts(2345)
这里是新代码:
serializeUser((用户:Express.user,done:(err:any,id?:Authenticator | undefined)=>void):void=>{done(null,user);})