Javascript 节点+;Passport,错误:身份验证策略必须有名称

Javascript 节点+;Passport,错误:身份验证策略必须有名称,javascript,node.js,passport.js,saml,Javascript,Node.js,Passport.js,Saml,我试图在require行中初始化SAML策略。大概是这样的: var myStrat = new require('passport-something').Strategy( { .... } ); passport.use('something', myStrat); 但是我得到了一个错误: .../passport/lib/authenticator.js:54 if (!name) { throw new Error('Authentication strategies m

我试图在require行中初始化SAML策略。大概是这样的:

var myStrat = new require('passport-something').Strategy(
    { .... }
);
passport.use('something', myStrat);
但是我得到了一个错误:

.../passport/lib/authenticator.js:54
  if (!name) { throw new Error('Authentication strategies must have a name'); }
               ^

Error: Authentication strategies must have a name
    at Authenticator.use ...
TypeError:无法读取身份验证器上未定义的属性“name”。如果未定义自定义策略名称,请使用
passport.use(myStrat)

我曾经有过这样的经历(效果很好):

但我希望更改它,因为我需要稍后调用passport saml的
Stragety.generateServiceProviderMetadata()
函数。 这(我认为)意味着我需要一个指向新策略实例的变量。 我知道这没什么大不了的,只是想让这个特定策略的代码看起来更符合其他策略,如果可以的话。它们看起来都像:

var GoogleStrat = require( 'passport-google-oauth2' ).Strategy;
passport.use('google', new GoogleStrat(
    ....
));
这应该起作用:

var myStrat = require('passport-something').Strategy(
    { .... }
);
passport.use('something', new myStrat());
或者,如果要保留实例,请执行以下操作:

var myStratInstance = new (require('passport-something').Strategy)(
    { .... }
);
passport.use('something', myStratInstance);

//在代码的这一部分中为您的策略提供这样的名称

从“@nestjs/passport”导入{PassportStrategy}; 导出类JwtAuthStrategy扩展了PassportStrategy(策略“”){

}


//在nest js中

如果您想要保存实例,这意味着什么?请详细说明两个例子。@MuhammadHannan他的意思很可能是“保留创建的实例”。在第一个示例中,myStrat
并不完全是策略,而是创建策略的函数。在第二个
myStrat
中,是创建的策略。我认为两者之间没有实际区别。
var myStratInstance = new (require('passport-something').Strategy)(
    { .... }
);
passport.use('something', myStratInstance);