मैं गणेश को एक साधारण अनुबंध तैनात करने की कोशिश कर रहा हूं, जैसे:

const fs = require('fs');
const Web3 = require('web3');
const web3 = new Web3('http://localhost:8545');
const bytecode = fs.readFileSync('./build/FirstContract.bin');
const abi = JSON.parse(fs.readFileSync('./build/FirstContract.abi'));

(async function () {
  const ganacheAccounts = await web3.eth.getAccounts();
  const myWalletAddress = ganacheAccounts[0];

  const myContract = new web3.eth.Contract(abi);

  myContract.deploy({
    data: bytecode
  }).send({
    from: myWalletAddress,
    gas: 5000000
  }).then((deployment) => {
    console.log('FirstContract was successfully deployed!');
    console.log('FirstContract can be interfaced with at this address:');
    console.log(deployment.options.address);
  }).catch((err) => {
    console.error(err);
  });
})();

बिना किसी त्रुटि के .sol फ़ाइल को संकलित करने के बाद, मैंने "नोड परिनियोजन.जेएस" का उपयोग करके कोड को परिनियोजित करने का प्रयास किया, और अंत में निम्न त्रुटि प्राप्त हुई:

(node:25233) UnhandledPromiseRejectionWarning: TypeError: this._deployData.startsWith is not a function
    at Object._encodeMethodABI (/opt/bak/eth/node_modules/web3-eth-contract/src/index.js:539:30)
    at Object._processExecuteArguments (/opt/bak/eth/node_modules/web3-eth-contract/src/index.js:858:39)
    at Object._executeMethod (/opt/bak/eth/node_modules/web3-eth-contract/src/index.js:883:54)
    at /opt/bak/eth/deploy.js:19:6
    ....
(node:25233) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।

S1b

1
user1994911 29 जुलाई 2020, 19:16

1 उत्तर

सबसे बढ़िया उत्तर

उनके दस्तावेज़ से https://web3js. readthedocs.io/hi/v1.2.11/web3-eth-contract.html#eth-contract

डेटा - स्ट्रिंग: अनुबंध का बाइट कोड। जब अनुबंध तैनात हो जाता है तब उपयोग किया जाता है।

हालांकि, अगर कोई एन्कोडिंग निर्दिष्ट नहीं है, तो readFileSync बफ़र लौटाता है।

आप जिस फ़ाइल को पढ़ रहे हैं उसके लिए आपको एन्कोडिंग पास करनी होगी readFileSync जैसे fs.readFileSync('./build/FirstContract.bin', <your_encoding>); या बफर को एक स्ट्रिंग में बदलने से पहले इसे data के रूप में myContract.deploy पर पास करना होगा।

1
Alberto Rivera 29 जुलाई 2020, 19:38