1

问题

尝试在此处遵循“您的第一个请求”示例:https ://docs.metaplex.com/sdk/js/getting-started#your-first-request

示例中提到的模块不包含所需的数据。

对于上下文,我正在使用此示例来开发在这些说明的第 5 步中解释的解决方案:https ://gist.github.com/creativedrewy/9bce794ff278aae23b64e6dc8f10e906

复制步骤

第 1 步)我@metaplex/js通过以下方式安装软件包:yarn add @metaplex/js

programs步骤 2)我通过放置从模块导入import { programs } from '@metaplex/js';.

第 3 步)我尝试Metadata通过以下方式从程序中解压缩:const { Metadata } = programs.metadata;

在这个阶段,如果我执行npm run start或者yarn run start我看到属性未定义Metadata的错误。programs.metadata当我查看时,node_modules/@metaplex/js/我发现错误是正确的。

模块中唯一提到元数据的功能是在您拥有 URL 后用于查找元数据的函数。我所处的阶段是尝试检索 URL,因此这个包没有用,尽管它是文档中唯一提到的包。

4

1 回答 1

1

为了解决这个问题,我创建了一个空的 react 应用程序并将以下依赖项添加到我的package.json文件中:

  "@metaplex/js": "^1.1.1",
  "@solana/spl-token": "^0.1.8",
  "@solana/web3.js": "^1.24.1",

然后我npm install在应用程序的根目录中运行。

在里面App.js(或者index.js如果你没有使用 create-react-app),我Metadata直接从 metaplex 包中解压出来,下面一行放在文件的顶部:

import { Metadata } from '@metaplex/js';

在所有导入下,我添加了以下代码(原始问题中示例代码的编辑版本):

const connection = new Connection('devnet');
const tokenPublicKey = 'Gz3vYbpsB2agTsAwedtvtTkQ1CG9vsioqLW3r9ecNpvZ';

const run = async () => {
  try {
    const ownedMetadata = await Metadata.load(connection, tokenPublicKey);
    console.log(ownedMetadata);
  } catch {
    console.log('Failed to fetch metadata');
  }
};

在我的实现中,我在函数中使用了一个按钮,而不是像示例中那样直接App()调用:run()

<button
  onClick={run}
>
  GALLERY
</button>

现在,当单击按钮时,我正确地看到了控制台中显示的元数据 JSON。

于 2021-12-22T13:07:13.410 回答