スコープ/ホイスト/ロードの順序に問題があります。以下では、Auth0Lockは、ライン6のブロックif
内に定義されていますが、すぐ外にもクラス内にも定義されていません。誰もがなぜ知っていますか?ES6クラスとモジュールシステムのスコープ
import { EventEmitter } from 'events';
import { isTokenExpired } from './jwtHelper';
console.log('in');
const isClient = typeof window !== 'undefined';
if (isClient) {
let Auth0Lock = require('auth0-lock').default;
console.log('isClient');
console.log('Auth0Lock inner', Auth0Lock);
}
console.log('Auth0Lock outer', Auth0Lock);
export default class AuthService extends EventEmitter {
constructor(clientId, domain) {
super();
console.log('happening');
if (!isClient) {
console.log('returning');
return false;
}
// Configure Auth0
this.lock = new Auth0Lock(clientId, domain, {});
// Add callback for lock `authenticated` event
this.lock.on('authenticated', this._doAuthentication.bind(this));
// Add callback for lock `authorization_error` event
this.lock.on('authorization_error', this._authorizationError.bind(this));
// binds login functions to keep this context
this.login = this.login.bind(this);
}
// curtailed
}
これを書いた人は、動作するjavascriptコードを書いていないためです。彼に尋ねてみてください。 –
@TamasHegedusああ!あなたもロックのバグを見たことがあります!そうです、申し訳ありません、私はあなたが私について話していると思いました! :D – user1775718
ええ、彼のコードは実際に動作します。もしあなたがブロックを取得するための 'var'を 'if'中に変更すると、... – user1775718