web3 - 메타마스크 API 연구(1)

2055 단어
메타마스크 지갑을 인식하고 궁극적으로 어플리케이션과 연결하여 사용자가 간단하게 가입하거나 메타마스크 로그인으로 로그인할 수 있도록 하는 기능을 구현하려고 합니다. opensea 가입/로그인이 작동하는 방식과 같습니다.


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

  • 1. 원본 코드



    MetaMask/detect-provider의 README.md에서 이 코드를 따르고 있었습니다.

    처음에는 간단한 기능을 먼저 테스트하기 위해 HTML/Javascript 모드(아직 nodejs 아님)에서 작업하고 있습니다. 그리고 repo README의 샘플 HTML 코드에서 오류가 발생했습니다.

    2. 오류




    await is only valid in async functions and the top level bodies of modules 
    


    3. 솔루션



    Fix - Await is only valid in async function Error in NodeJS

    블로그에서 설명했듯이 최상위 await를 설정하지 않고 사용하고 있어서 오류가 발생했습니다. type= module 또는 스크립트 태그에서 package.json를 변경해야 합니다.

    따라서 README.md의 HTML 코드는 다음과 같아야 합니다.

    <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>
    

    좋은 웹페이지 즐겨찾기