METAMASK ERROR: Typeerror: This._deploydata.startswith is not a function
When implementing your smart contract, you can use web3.js to interact with the Ethereum Network and store the data compiled in two separate files, according to your requirements. However, when Metamask is used, he finds an error that seems to be related to the Startswith" method of the
_ _dploydataobject that is called in his own instance.
To solve this problem, we break down what could cause it and how you can solve it.
Understand the error
TheTypeerror: This._deploydata.startswith is not a function error” occurs when MetamSk tries to call the start method" in an object that does not admit it. In his case,
_dploydatathe property looks
_dployed_dataof the web 3 contract returned by the
get implemented () method.
Possible causes
- Incorrect Abi
: Your compiled contract may not have been included correctly in the file ‘Abi.json
in the directory' contracts' of your project.
- Storage of missing or incorrect data : It is trying to store data from a separate file, but has not configured Metamask to use this storage.
- Network connection problems : There may be connectivity problems with your network, which makes the contract implemented of the contract are not stored correctly.
Solutions
1. Verify abi
Make sure you have included all the necessary data in your file 'abi.json:
`JSON
{
"Contractname": ""
"Abiversion": ""
// ... Other properties ...
}
If your ABI version is incorrect or foul, update the 'abi.json file.
2. Configure data storage
Be sure to use Metamask to store data from a separate file:
- Create a new contract : Compile and implement your smart contract using web3.js.
- Use
get implemented ()
Method : Call this method in the object of the web 3 contract to recover its implemented status.
`JavaScript
const web3 = require ('web3');
const contract = require ('./ Contract');
// assuming that the 'contract' is the instance of the contract
ASYNC MAIN FUNCTION () {
const implementeddata = web3.eth.getDployedstate (contract.address);
Console.log (implemented Data);
// Now you can use this data to implement your new contract
}
3. Verify the network connection
Check if there is any connectivity problem with your network:
- METAMASK configuration : Make sure MetamSk is configured correctly and have permission to access the block chain.
- Network connection : Try to connect to a different node or a test network to discard local connection problems.
Example use case
Suppose you have compiled your contract as follows:
JSON
{
"Contractname": "Mytartcontract",
"Abiversity": "1",
"Bytecode": "0x1234567890abcdef"
}
You can use theget implemented () method to recover the contract implemented from the contract:
`JavaScript
const web3 = require ('web3');
const contract = require ('./ mysmartcontract');
ASYNC MAIN FUNCTION () {
const implementeddata = web3.eth.getdeployedstate (contract.address);
console.log (implementeddata);
// Now you can use this data to implement your new contract
}
If theget implemented () method returns an empty object, it could indicate that MetamSk does not store the data correctly.
Following these steps and problem solving strategies, you must be able to solve the error and successfully implement your intelligent contract using Metamask.