Ошибки при выполнении примера кода - Класс в экспортированном классе - Auth0 с React Node.js - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь запустить учебный код для создания службы аутентификации в моем проекте React.

Вот пример кода, который они хотят, чтобы я запустил:

// src/Auth/Auth.js

import auth0 from 'auth0-js';

export default class Auth {
  auth0 = new auth0.WebAuth({
    domain:'domain.auth0.com',
    clientID: 'clientId',
    redirectUri: 'http://localhost:3000/callback',
    audience: 'https://myproject.auth0.com/userinfo',
    responseType: 'token id_token',
    scope: 'openid'
  });

  login() {
    this.auth0.authorize();
  }
}

Когда я запустилэто, он выдает ошибки о ключевых словах «импорт» и «экспорт».Поэтому я изменил это на следующее:

const auth0 = require("auth0-js");

class Auth {
    auth = new auth0.WebAuth({
        domain: 'mydomain.auth0.com',
        clientID: 'clientID',
        redirectUri: 'http://localhost:3000/callback',
        audience: 'https://myproject.auth0.com/userinfo',
        responseType: 'token id_token',
        scope: 'openid'
  });

  login() {
    this.auth.authorize();
  }
}

module.exports = Auth;

Но это дает мне эту ошибку:

/Users/myname/my project/app/services/auth.js:4
    auth = new auth0.WebAuth({
         ^


SyntaxError: Unexpected token =
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)

Какой правильный синтаксис?

1 Ответ

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

поля класса экземпляра поддерживаются только в узле> = 10 с использованием флага --harmony.

Вместо него можно использовать getter что он поддерживается без каких-либо флагов.

class Auth {

    get auth() {
        if(!this._auth) {
            this._auth = new auth0.WebAuth({ /* ... */ });
        }

        return this._auth;
    }

    login() {
        this.auth.authorize();
    }
}

Или просто установите его внутри constructor

class Auth {

    constructor() {

        this.auth = new Auth0.WebAuth({ /* ... */ });
    }
}

Или вы можете использовать babel для переносакод.

...