类型“typeof import @metaplex-foundation/mpl-token-metadata”上不存在属性“PROGRAM_ID”

问题描述 投票:0回答:1

我正在尝试在 Solana 网络上创建代币,但有一个问题。 我安装了 @metaplex-foundation/mpl-token-metadata 并将其导入到我的代码中,但它给了我一个错误

我正在复制本教程:https://awoyemivictor.notion.site/Latest-Solana-Token-Creation-Naming-Updating-Step-by-Step-Guide-for-Beginners-July-2022-fc2d8a4042ec49909047ba87eb3aa85a

错误:

Property 'PROGRAM_ID' does not exist on type 'typeof import("d:/Documents/VSC_Files/Token/node_modules/@metaplex-foundation/mpl-token-metadata/dist/src/index")'.

这是代码:

import * as mpl from "@metaplex-foundation/mpl-token-metadata";
import * as web3 from "@solana/web3.js"
import * as anchor from '@project-serum/anchor'

export function loadWalletKey(keypairFile: string): web3.Keypair {
    const fs = require("fs");
    const loaded = web3.Keypair.fromSecretKey(
        new Uint8Array(JSON.parse(fs.readFileSync(keypairFile).toString())),
    );
    return loaded;
}



async function main() {
    console.log("Let's name some tokens");

    const myKeypair = loadWalletKey("AfkbuWt6YuU7xLzUz2M5rBRVpqBcCutyH9895v9YxU6w.json")
    console.log(myKeypair.publicKey.toBase58())
    const mint = new web3.PublicKey("EcUBmCbntM3SniLH54B92TdqR3JexjbW57y8jXmmugxC.json")


    const seed1 = Buffer.from(anchor.utils.bytes.utf8.encode("metadata"));
    const seed2 = Buffer.from(mpl.PROGRAM_ID.toBytes());
    const seed3 = Buffer.from(mint.toBytes());

    const [metadataPDA, _bump] = web3.PublicKey.findProgramAddressSync([seed1, seed2, seed3], mpl.PROGRAM_ID);


    const accounts = {
        metadata: metadataPDA,
        mint,
        mintAuthority: myKeypair.publicKey,
        payer: myKeypair.publicKey,
        updateAuthority: myKeypair.publicKey,
    }


    const dataV2 = {
        name: "Echo Token",
        symbol: "ECHO",
        uri: "https://indigo-efficient-sparrow-269.mypinata.cloud/ipfs/QmbQBemXZBS7Uvhd2LdHauBoZimqmy8vDDKCohAnEx49k6?_gl=1*16nlwuc*_ga*MTI0NzMwNTIwMy4xNzA0MzE5OTIx*_ga_5RMPXG14TE*MTcwNDMxOTkyMi4xLjEuMTcwNDMyMDk0MS42MC4wLjA.",
        
        sellerFeeBasisPoints: 0,
        creators: null,
        collection: null,
        uses: null
    }

    const args = {
        createMetadataAccountArgsV2: {
            data: dataV2,
            isMutable: true
        }
    };

    const ix = mpl.createCreateMetadataAccountV2Instruction(accounts, args);
    const tx = new web3.Transaction();
    tx.add(ix);
    const connection = new web3.Connection("https://api.devnet.solana.com");
    const txid = await web3.sendAndConfirmTransaction(connection, tx, [myKeypair]);
    console.log(txid);



}

main()

我尝试安装metaplex js和metaplex umi并导入它们,但没有帮助。

typescript import solana-web3js metaplex anchor-solana
1个回答
0
投票

首先请注意,最新的

@metaplex-foundation/mpl-token-metadata
包依赖于 umi,所以你将无法使用 web3js
publickey
类型,但需要 umi
publickey
类型。

您可能还想使用 mpl-token-metadata 辅助方法,而不是直接调用指令

createV1
:

await createFungible(umi, {
  mint,
  name: 'Echo Token',
  symbol: 'ECHO',
  uri: 'https://indigo-efficient-sparrow-269.mypinata.cloud/ipfs/QmbQBemXZBS7Uvhd2LdHauBoZimqmy8vDDKCohAnEx49k6?_gl=1*16nlwuc*_ga*MTI0NzMwNTIwMy4xNzA0MzE5OTIx*_ga_5RMPXG14TE*MTcwNDMxOTkyMi4xLjEuMTcwNDMyMDk0MS42MC4wLjA.',
  sellerFeeBasisPoints: percentAmount(0),
}).sendAndConfirm(umi)

https://developers.metaplex.com/token-metadata/mint#creating-accounts

如果您实际上只是在寻找令牌元数据程序 ID

@metaplex-foundation/mpl-token-metadata
,则将其设置为
MPL_TOKEN_METADATA_PROGRAM_ID
https://mpl-token-metadata-js-docs.vercel.app/functions/getMplTokenMetadataProgramId.html

© www.soinside.com 2019 - 2024. All rights reserved.