TypeError: конструктор класса MixinStrategy не может быть вызван без 'new' - PullRequest
0 голосов
/ 02 июня 2018

Я следовал примеру jwt, как здесь https://docs.nestjs.com/techniques/authentication. Я скопировал и вставил пример.После npm установки необходимых битов и битов я получил эту ошибку, которая не возникает в примере, который я только что скопировал.Из которых я понятия не имею, что это значит!У кого-нибудь есть идеи?

TypeError: Class constructor MixinStrategy cannot be invoked without 'new'

   8 | export class JwtStrategy extends PassportStrategy(Strategy) {
   9 |   constructor(private readonly authService: AuthService) {
> 10 |     super({
  11 |       jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  12 |       secretOrKey: 'secretKey',
  13 |     });

  at new JwtStrategy (data/auth/strategies/jwt.strategy.ts:10:5)
  at resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:64:84)
  at Injector.resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:86:30)

1 Ответ

0 голосов
/ 03 июня 2018

В проекте отсутствуют @types/passport-jwt наборы, поэтому они должны быть дополнительно установлены:

npm i -D @types/passport-jwt

В результате

src \ auth \ jwt.strategy.ts (10,6): Цель вызова не содержит подписей.(2346)

ошибка, потому что @nestjs/passport не был правильно набран;PassportStrategy тип возвращаемого значения any.

Чтобы это исправить,

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
...

следует изменить на:

import { ExtractJwt, Strategy } from 'passport-jwt';
import { AbstractStrategy, PassportStrategy } from '@nestjs/passport';
...
const PassportJwtStrategy: new(...args) => AbstractStrategy & Strategy = PassportStrategy(Strategy);

@Injectable()
export class JwtStrategy extends PassportJwtStrategy {
...
...