Estoy tratando de ejecutar este ejemplo de "inicio" de los documentos. Sin embargo, creo que ha habido un cambio y programas.metadata.Metadata (que se muestra allí) ya no funciona.
https://docs.metaplex.com/sdk/js/getting-started
Ellos sugieren esto:
import { Connection, programs } from '@metaplex/js'; const connection = new Connection('devnet'); const tokenPublicKey = 'Gz3vYbpsB2agTsAwedtvtTkQ1CG9vsioqLW3r9ecNpvZ'; const run = async () => { try { const ownedMetadata = await programs.metadata.Metadata.load(connection, tokenPublicKey); console.log(ownedMetadata); } catch { console.log('Failed to fetch metadata'); } }; run();
Tengo esto en mi aplicación React:
import { Connection, programs } from '@metaplex/js'; const connection = new Connection('devnet'); const tokenPublicKey = 'Gz3vYbpsB2agTsAwedtvtTkQ1CG9vsioqLW3r9ecNpvZ'; const run = async () => { try { const ownedMetadata = await programs.metadata.Metadata.load(connection, tokenPublicKey); console.log(ownedMetadata); } catch(error) { console.log('Failed to fetch metadata'); console.log(error); } }; function App() { return ( <div className="App"> <p onClick={run}>would be cool if it worked</p> </div> ); } export default App;
Recibo un error como si programas.metadata.Metadata no existiera: "No se pueden leer las propiedades de undefined (leyendo 'Metadata')". Incluso saqué esto de React e hice un script de nodo simple para ejecutar el código de ejemplo, que falla de la misma manera.
¿Alguna idea de cómo podría arreglar esto?
Para los usuarios que encuentran esta pregunta a través de la búsqueda: ahora hay una mejor solución que usar @metaplex-foundation/mpl-token-metadata
directamente. Eche un vistazo a @metaplex/js-next findByMint
Esas líneas deberían ser todo lo que necesitas. imageUrl
sería la ruta de la imagen.
import { Metaplex } from "@metaplex-foundation/js-next"; import { Connection, clusterApiUrl } from "@solana/web3.js"; const connection = new Connection(clusterApiUrl("mainnet-beta")); const metaplex = new Metaplex(connection); const mint = new PublicKey("ATe3DymKZadrUoqAMn7HSpraxE4gB88uo1L9zLGmzJeL"); const nft = await metaplex.nfts().findByMint(mint); const imageUrl = nft.metadata.image;