web3 — изучение metamask api(1)

Я пытаюсь реализовать функцию, которая распознает кошелек metamask, и в конечном итоге соединяется с приложением, чтобы пользователь мог просто зарегистрироваться или войти в систему с помощью логина metamask. Подобно тому, как работает opensea sign up / login.

  • metamask api: https://docs.metamask.io/guide/getting-started.html#basic-considerations, https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents

1. Оригинальный код

Я следовал этому коду в README.md из MetaMask/detect-provider

Изначально я работаю в режиме HTML/Javascript (пока не nodejs), чтобы сначала протестировать простые функции. И пример HTML кода в README из репозитория выдавал ошибку.

2. ошибка

await is only valid in async functions and the top level bodies of modules 
Войти в полноэкранный режим Выход из полноэкранного режима

3. Решение

Исправление — Ошибка Await допустима только в async-функции в NodeJS

Как объясняется в блоге, ошибка возникала из-за использования await верхнего уровня без настройки. Это требовало изменения type= module в package.json или теге script.

Таким образом, HTML-код в файле README.md должен выглядеть следующим образом

<script src="https://unpkg.com/@metamask/detect-provider/dist/detect-provider.min.js"></script>
<script type="module">
  const provider = await detectEthereumProvider()

  if (provider) {
    // handle provider
  } else {
    // handle no provider
  }
</script>
Вход в полноэкранный режим Выйти из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий