NFT Minter tutorial

The downloaded code from github does not work. When I press the submit button nothing happens, cannot figure out why. this is the main.js. The error that I got in console is the following : Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ā€˜lazyMintā€™)
at HTMLButtonElement.submit (main.js:47).

////////////////////////////////////////////////////////////////////////////////////////////

/** Connect to Moralis server */

const serverUrl = ā€œhttps://x1tg2q1nv1tm.usemoralis.com:2053/serverā€;

const appId = ā€œjDL1R4vNL7kaj0WORerdQtKs0wwJWVPHK5KvJ7v0ā€;

Moralis.start({ serverUrl, appId });

let user = Moralis.User.current();

/** Add from here down */

async function login() {

if (!user) {

try {

  user = await Moralis.authenticate({ signingMessage: "Hello World!" });

  initApp();

} catch (error) {

  console.log(error);

}

} else {

Moralis.enableWeb3();

initApp();

}

}

function initApp() {

document.querySelector("#app").style.display = ā€œblockā€;

document.querySelector("#submit_button").onclick = submit;

}

async function submit() {

const input = document.querySelector("#input_image");

let data = input.files[0];

const imageFile = new Moralis.File(data.name, data);

await imageFile.saveIPFS();

let imageHash = imageFile.hash();

let metadata = {

name: document.querySelector("#input_name").value,

description: document.querySelector("#input_description").value,

image: "/ipfs/" + imageHash,

};

console.log(metadata);

const jsonFile = new Moralis.File(ā€œmetadata.jsonā€, {

base64: btoa(JSON.stringify(metadata)),

});

await jsonFile.saveIPFS();

let metadataHash = jsonFile.hash();

console.log(jsonFile.ipfs());

let res = await Moralis.Plugins.rarible.lazyMint({

chain: "rinkeby",

userAddress: user.get("ethAddress"),

tokenType: "ERC721",

tokenUri: "ipfs://" + metadataHash,

royaltiesAmount: 5, // 0.05% royalty. Optional

});

console.log(res);

document.querySelector(

"#success_message"

).innerHTML = NFT minted. <a href="https://rinkeby.rarible.com/token/${res.data.result.tokenAddress}:${res.data.result.tokenId}">View NFT;

document.querySelector("#success_message").style.display = ā€œblockā€;

setTimeout(() => {

document.querySelector("#success_message").style.display = "none";

}, 5000);

}

login();

Hello,

Did you manage to solve this problem? (facing the same issueā€¦)

Hey @luca.pizzola

Please always format your code before posting (guide)

Please provide both your js and html code

Hey @luca.pizzola, seems like you havenā€™t initialize your plugins, recommend you to call Moralis.initPlugins to do that before using any of the pluginsā€™ functionality :raised_hands:

1 Like

initPlugins solved it for me. However, facing a new issue when calling lazyMintā€¦

D/WebView: Uncaught (in promise) Error: Nothing saved to memory card
I/chromium: [INFO:CONSOLE(7146)] ā€œUncaught (in promise) Error: Nothing saved to memory cardā€, source: https://unpkg.com/moralis/dist/moralis.js (7146)

This happens when the plugin returns an error.
Can you post the payload you are sending? Do you see any error in the console?

Hey dani,

We have moved to a different implementationā€¦

We got that error and an Authentication Failure error (canā€™t remember the exact message)
Turns out that the Authentication failure message was triggered because of low intrinsic gas.

Havenā€™t solved the memory card issue since we are now using a different approach.

Thank you for your reply.

1 Like

Hey @Yuval

If you will face this issue once again in the future I will be happy to investigate!
I just tried again by just copy-pasting the code from the docs and worked immediately :slight_smile:

Docs: https://github.com/MoralisWeb3/plugindocs/tree/main/rarible%20plugin

Cheers,
Dani

1 Like

yep, i solved! do u need help?

1 Like