Truffle
我收到錯誤找不到模組“ethereumjs-wallet/hdkey”
我正在執行此程式碼 deploy.js
const HDWalletProvider = require('truffle-hdwallet-provider'); const Web3 = require('web3'); const { interface, bytecode } = require('./compile'); const provider = new HDWalletProvider( '***** ****** ********* ********************* ***********', 'https://rinkeby.infura.io/v3/*****************' ); const web3 = new Web3(provider); const deploy = async () => { const accounts = await web3.eth.getAccounts(); console.log('Attempting to deploy from account', accounts[0]); const result = await new web3.eth.Contract(JSON.parse(interface)) .deploy({ data: bytecode, arguments: ['Hi there!'] }) .send({ gas: '1000000', from: accounts[0] }); console.log('Contract deployed to', result.options.address); }; deploy();
我在下面給出了這個。
node deploy.js module.js:549 throw err; ^ Error: Cannot find module 'ethereumjs-wallet/hdkey' at Function.Module._resolveFilename (module.js:547:15) at Function.Module._load (module.js:474:25) at Module.require (module.js:596:17) at require (internal/module.js:11:18) at Object.<anonymous> (C:\Users\Saurabh\inbox\node_modules\truffle-hdwallet-provider\index.js:2:13) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3)
我很確定我沒有做任何錯字。這是一些包裝問題。有誰知道如何解決?
ethereumwalletjs 版本 > 0.6.0 有一些目錄問題。他們在 ethereumwallet 中創建了 dist 文件夾,並將 hdkey.js 和 index.js 模組保存在其中。這就是為什麼會出現這個問題。我將它保存在 ethereumwallet 包的直接位置並且它有效。現在,此解決方案將適用於大於 0.6.0 的每個更高版本。
更新:
npm uninstall ethereumjs-wallet npm uninstall truffle-hdwallet-provider npm install --save ethereumjs-wallet@0.6.0 npm install --save truffle-hdwallet-provider@0.0.3
歸功於 udemy QA Sarshad 和Guang 的兩位先生
我嘗試將以前的版本安裝到 ethereumjs-wallet (
npm install --save ethereumjs-wallet@0.5.2
或@0.6.0
),這一次它開始執行,但在 async/await 上崩潰作為警告。etherscan 上也沒有交易,所以它似乎需要使用先前版本 < 0.6.1 的 ethereumjs-wallet 的 Promise(還沒有嘗試過)。
ethereumjs-wallet@0.6.1 具有不同的文件結構,hdkey 不再位於其根文件夾中。