'AnchorError occurred. Error Code: InstructionFallbackNotFound. Error Number: 101. Error Message: Fallback functions are not supported

I am trying to call the mintNft function on the front end but it throws an error and I can't fix it

the error is: "Program log: AnchorError occurred. Error Code: InstructionFallbackNotFound. Error Number: 101. Error Message: Fallback functions are not supported."

see http response: rpc response

lib.rs

web.ts:

  const tx = await program.rpc.mintNft(
    mintKey.publicKey,
    "https://arweave.net/y5e5DJsiwH0s_ayfMwYk-SnrZtVZzHLQDSTZ5dNRUHA",
    "NFT Title",
    {
      accounts: {
        mintAuthority: program.provider.wallet.publicKey,
        mint: mintKey.publicKey,
        tokenAccount: NftTokenAccount,
        tokenProgram: TOKEN_PROGRAM_ID,
        metadata: metadataAddress,
        tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
        payer: program.provider.wallet.publicKey,
        systemProgram: SystemProgram.programId,
        rent: anchor.web3.SYSVAR_RENT_PUBKEY,
        masterEdition: masterEdition,
      },
    }
  );
  console.log(tx);
  // console.log("Your transaction signature", tx);


Solution 1:[1]

  1. update your code to match anchor 0.24.2, It should look like this in Cargo.toml
[dependencies]
anchor-lang = "0.24.2"
mpl-token-metadata = { version="1.2.5", features = [ "no-entrypoint" ] }
anchor-spl = "0.24.2"
  1. update package.json
{
    "dependencies": {
        "@project-serum/anchor": "^0.24.2",
        "@solana/spl-token": "^0.2.0"
    },
    "devDependencies": {
        "@types/chai": "^4.3.1",
        "@types/mocha": "^9.1.1",
        "chai": "^4.3.6",
        "mocha": "^10.0.0",
        "ts-mocha": "^10.0.0",
        "typescript": "^4.6.4"
    }
}
  1. migrate the code to match anchor 0.24.2 for example (too long to post here) https://github.com/katopz/metaplex-anchor-nft/commit/f54ffaf087858f3997e797133ccc6d7748309c0a

  2. and also rpc here https://github.com/katopz/metaplex-anchor-nft/commit/a72929548c8041ac422708c04078b8543e0f8a67

  3. If nothing work, try run anchor test my forked here (tested today) https://github.com/katopz/metaplex-anchor-nft

  4. For frontend, I think you will need to pass wallet provider to make it work. Should be something like this.

anchor.setProvider(new Client(programId, wallet).provider)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 katopz