Contract-Development
XMLHttpRequest() 在 Truffle 項目中可能不起作用
我想在一個 Truffle 項目中連接到我的智能合約並從中獲取一些資訊。智能合約的名稱是“TEST”。以下是我的 app.js 程式碼,它應該與我的智能合約進行通信:
var Web3=require("web3"); var web3= new Web3('ws://localhost:8545'); web3.eth.getAccounts().then(console.log); let request=new XMLHttpRequest(); request.open("GET","E:\Emrooz\build\contracts\TEST.json"); request.send(null); var jsonFile=JSON.parse(request.responseText); var myContract=new web3.eth.Contract(jsonFile,"0xC8129A44979263D578A8BD52d403d6537820e969",{ account:"0xeB2a9E0338616e35B5e844Bd38924C79D99d7346", balance:"99.98990494"}); var acc=myContract.defaultAccount; console.log(acc.toString());
這裡,“Emrooz”是 Truffle 項目的文件名。但是當我使用 Nodejs 編譯 app.js 時,會發生以下錯誤:
甚至,我添加
var XMLHttpRequest=require('xmlhttprequest').XMLHttpRequest;
到程式碼中,但該錯誤再次發生。有什麼問題?我該怎麼辦?
XMLHttpRequest();
不需要連接智能合約並從中接收資訊。所提供程式碼的目的是接收存在於new web3.eth.Contract(…)
為此,我們可以使用
myContract.options.accoun
代替
myContract.defaultAccount
以下程式碼是輸出所需結果的問題程式碼的更改版本:
var Web3=require("web3"); var fs=require('fs');//fs module added in solution. var web3= new Web3('ws://localhost:8545'); web3.eth.getAccounts().then(console.log);// shows all accounts exist in the project var JsonFile=fs.readFileSync("E:/Emrooz/build/contracts/TEST.json"); var JsFile=JSON.parse(JsonFile); var myContract=new web3.eth.Contract(JsFile.abi," 0xC8129A44979263D578A8BD52d403d6537820e969 ",{ account:" 0xeB2a9E0338616e35B5e844Bd38924C79D99d7346 ", balance:"99.98990494"}); console.log(myContract.options.account);//shows the desirable result.