Как избежать / исправить исключение "Auth0Lock не определено"

Я пытаюсь использовать Auth0 для входа в социальную сеть, но получаю исключение из неопределенной ссылки.

Это сервис аутентификации

import { Injectable }      from '@angular/core';
import { tokenNotExpired } from 'angular2-jwt';

// Avoid name not found warnings
declare var Auth0Lock: any;

@Injectable()
export class AuthService {
// Configure Auth0

lock = new Auth0Lock('I have set the ID correctly here', 'and the domain as well', {});

constructor() {
// Add callback for lock `authenticated` event
  this.lock.on("authenticated", (authResult) => {
  localStorage.setItem('id_token', authResult.idToken);
  });
}

public login() {
// Call the show method to display the widget.
  this.lock.show();
};

public authenticated() {
  // Check if there's an unexpired JWT
  // This searches for an item in localStorage with key == 'id_token'
  return tokenNotExpired();
};

public logout() {
   // Remove token from localStorage
    localStorage.removeItem('id_token');
  };
}

Я ввел услуги и настроил провайдеров. Все правильно подключено, но просто не найдется Auth0Lock хотя и определено. Каждый раз, когда он достигает lock = new Auth0Lock('ID', 'DOMAIN', {}); это взрывает.

3 ответа

Решение

Я заменил declare var Auth0Lock: any; с const Auth0Lock = require('auth0-lock').default; и это решило проблему.

Принятый ответ хорош. Я получил сообщение Не удается найти имя "Требуется". Вместо того, чтобы использовать 'Declare Const Require', я импортировал так:

import Auth0Lock from 'auth0-lock';

Мне нужно было добавить в index.html:

<script src="https://cdn.auth0.com/js/lock/10.8/lock.min.js"></script>

через https://github.com/auth0/lock/issues/588

Другие вопросы по тегам