await - ошибка зарезервированного слова в ReactJS - PullRequest
0 голосов
/ 30 сентября 2018

Я новичок в ReactJS, и я использовал simple-oauth для подключения к тестовому API.Я добавил идентификатор клиента, секрет клиента, имя пользователя и пароль, а также URL-адрес токена oauth.Я получаю синтаксическую ошибку await is a reserved word (40:21)

Ниже приведен мой текущий код, который является примером из простого oauth: -

const credentials = {
  client: {
    id: "CLIENT_ID",
    secret: "CLIENT_SECRET"
  },
  auth: {
    tokenHost: "http://localhost/oauth/token"
  }
};

const oauth2 = require('simple-oauth2').create(credentials);

const tokenConfig = {
  username: "USERNAME",
  password: "PASSWORD",
  scope: '<scope>',
};

try {
  const result = await oauth2.ownerPassword.getToken(tokenConfig);
  const accessToken = oauth2.accessToken.create(result);
} catch (error) {
  console.log('Access Token Error', error.message);
}

Я также пробовал асинхронную функцию.Хотя ошибка исчезла, журнал консоли не запускается.Вот код асинхронной функции: -

async () => {
  const result = oauth2.ownerPassword.getToken(tokenConfig);
  const accessToken = oauth2.accessToken.create(result);
  // no console.log in the debugger
  console.log(result);
};

Что может быть не так в коде?пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

Я также пробовал асинхронную функцию.Хотя ошибка исчезла, журнал консоли не запускается.

Поскольку вы не вызывали свою функцию.Что вам нужно, это Self Invoking Function:

(async () => {
    const result = oauth2.ownerPassword.getToken(tokenConfig);
    const accessToken = oauth2.accessToken.create(result);
    // no console.log in the debugger
    console.log(result);
  })();
0 голосов
/ 11 ноября 2018

Вы должны объявить componentWillMount (или componentDidMount) как async, чтобы использовать await.Вы можете сделать это, изменив подпись:

async componentWillMount() {

  const result = await oauth2.ownerPassword.getToken(tokenConfig);
  const resultJson = await result.json();
  const accessToken = await oauth2.accessToken.create(resultJson);
  const accessTokenJson = await accessToken.json();

  //if you need
  this.setState({
    accessTokenJson,
  });

  //For debugging
  console.log('result', {resultJson, accessTokenJson});
}
0 голосов
/ 30 сентября 2018

Строки кода не запускаются.Вам нужно будет свернуть в асинхронную функцию и вызвать функцию откуда-то componentDidMount будет хорошим местом.

const funcName = async () => {
const result = await oauth2.ownerPassword.getToken(tokenConfig);
const accessToken = oauth2.accessToken.create(result);
// no console.log in the debugger
console.log(result);
};

componentDidMount(){
  this.funcName();
}
...