우선 문제를 더 쉽게 이해하실 수 있도록 문제 이해에 더 도움이 되는 기능들만 남겨두겠습니다. 이 코드를 사용하면 첫 번째 NFT의 idToken이 0인 배열에서 NFT를 생성할 수 있습니다. "계약에서 데이터 가져오기" 버튼을 클릭하면 매개변수 0을 readContract(tokenid) JavaScript 함수에 전달하여 Power 값, uint8(무작위로 생성, 0에서 100 사이의 값) HTML 파일을 표시하려고 합니다. 안타깝게도 버그가 발생하여 이를 해결하기 위해 다양한 방법을 시도했지만 성공하지 못했습니다. 계약과 JavaScript가 올바르게 연결되어 있으므로(이를 확인하는 connectContract() 함수로 입증됨) ABI와 주소는 문제의 일부가 아닙니다. readContract() 함수는 Solidity 계약에 작성된 getNFTPower 메서드를 사용하도록 되어 있지만 뭔가 잘못된 것 같습니다. 반환 값이 유효하지 않습니다. 하지만 나에게는 그것들이 하하… 또한 readContract() 함수의 첫 번째 코드 줄 앞과 뒤에 몇 가지 console.log 문을 삽입해 보았습니다. const power = 대기 window.contract.methods.getNFTPower(tokenId).call() 해당 명령문 다음에 console.log 출력이 표시되지 않으므로 문제가 발생한 것 같습니다.
누군가 나에게 힌트를 줄 수 있기를 바랍니다.. 감사합니다.
아래 오류 스크린샷
아래 코드의 일부입니다.
솔리디티 코드
으아아아HTML/JS
으아아아readContract() 함수를 다양한 방법으로 다시 작성해 보았지만 도움이 되지 않았습니다. 내 목표는 "계약에서 데이터 가져오기" 버튼을 클릭하고 매개변수로 전달하는 NFT의 tokenId의 POWER 값을 표시하는 것입니다(위 코드에서는 첫 번째 NFT, tokenId = 0).
가장 일반적인 두 가지 이유는 다음과 같습니다.