React, Web3.js y Metaplex: No se puede importar `programs.metadata.Metadata` de @metaplex/js
Problema
Intentando seguir el ejemplo de ‘tu primera solicitud’ aquí: https://docs.metaplex.com/sdk/js/getting-started#your-first-request
El módulo al que se hace referencia en los ejemplos no contiene los datos necesarios.
Para dar contexto, estoy utilizando este ejemplo para desarrollar la solución explicada en el paso 5 de estas instrucciones: https://gist.github.com/creativedrewy/9bce794ff278aae23b64e6dc8f10e906
Pasos para replicar
Paso 1) Instalo el paquete @metaplex/js
a través de: yarn add @metaplex/js
Paso 2) Importo programs
desde el módulo colocando import { programs } from '@metaplex/js';
.
Paso 3) Intento desempaquetar Metadata
de programs a través de: const { Metadata } = programs.metadata;
En esta etapa, si ejecuto npm run start
o yarn run start
, veo el error de que la propiedad Metadata
de programs.metadata
es indefinida. Cuando veo en node_modules/@metaplex/js/
, veo que el error es correcto.
La única mención de metadata en el módulo es la función utilizada para buscar metadatos una vez que tienes la URL. La etapa en la que me encuentro es intentar recuperar la URL, por lo que este paquete no es útil, a pesar de ser el único mencionado en la documentación.
davy.ai
Solución
Parece que el módulo
@metaplex/js
ha cambiado desde que se creó la documentación, y la propiedadMetadata
ya no está disponible enprograms.metadata
.Para obtener la URL de los metadatos, en su lugar puedes utilizar la función
getMetadata
del módulo@metaplex/js
. Aquí tienes un ejemplo:En este ejemplo, pasamos la dirección de la emisión del token a la función
retrieveMetadataURL
, y esta devuelve la URL de los metadatos para ese token.Ten en cuenta que también deberás instalar los paquetes
@solana/wallet-adapter-base
y@solana/web3.js
.