Solana MetaplexでmintNftを実行すると Cannot read creators エラー

Solana Cookbookの Mint the NFT のセクションを試していたときに発生したエラー。
(「actions.mintNFT」でNFT化するセクション)

環境はいずれもlocalnetで実行。

  • Arweave:testnet.redstone.tools(Arweaveはdevnet/testnetがないため有志のオンチェーンを利用)
  • Solana:devnet(Metaplexはlocalnetがないため)

【2022/5/11 追記】
Arweave公式と思われるtestnetを発見しました。

host: www.arweave.run
port: 443
protocol: https

現象

以下を実行すると、creatorsが参照できないというエラーが表示される。

% ts-node mint_nft.ts
/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/metaplex/ts/node_modules/@metaplex/js/lib/index.cjs.js:85
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
                                                         ^
TypeError: Cannot read properties of undefined (reading 'creators')
    at /Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/metaplex/ts/node_modules/@metaplex/js/src/actions/mintNFT.ts:47:19
    at Generator.next (<anonymous>)
    at fulfilled (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/metaplex/ts/node_modules/@metaplex/js/lib/index.cjs.js:85:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

原因

2つ原因があった。

  1. creatorsのフィールドをJSONファイルに記述していなかった。
  2. ArweaveのアップロードしたJSONファイルのフォーマットがおかしくなっていた。

また、 Metaplexのドキュメント のサンプルJSONをコピペして使っていたが、これ自体がJSONフォーマットに沿っていなかった。そのため、コピペしたあとに正しい情報に修正が必要。

対応

正しいJSONファイルにする。

JSONLint でJSONフォーマットが正しいか確認する

または、 Arweaveにアップロード済みサンプルJSON をコピペして動作するか確認する