Web3js
未擷取的 ReferenceError:未定義 TruffleContract
我正在研究智能合約。當我嘗試通過 lite-server 提供智能合約時,我在瀏覽器控制台中看到以下錯誤
這裡是我的 app.js 原始碼:https ://pastebin.com/UjFuYCyQ
我試過單獨安裝 TruffleContract 但沒有運氣。
App.js 程式碼:
App = { web3Provider: null, contracts: {}, account: 0x0, init: function() { return App.initWeb3(); }, initWeb3: function() { if (typeof web3 !== 'undefined') { App.web3Provider = web3.currentProvider; } else { App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545'); } web3 = new Web3(App.web3Provider); App.displayAccountInfo(); return App.initContract(); }, displayAccountInfo: function(){ web3.eth.getCoinbase(function(err, account){ if(err === null){ App.account = account; $('#accountId').text(account); } }); return App.initContract(); }, initContract: function() { $.getJSON('Voting.json', function(votingArtifact) { App.contracts.Voting = TruffleContract(votingArtifact); App.contracts.Voting.setProvider(App.web3Provider); return App.reloadVoters(); }); }, reloadVoters: function() { App.displayAccountInfo(); } }; $(function() { $(window).load(function() { App.init(); }); });
它看起來像普通的 javascript,為了訪問
TruffleContract
,您需要在 html 上添加腳本<script src="{uri_truffle_contract.js}"></script>
如果要通過 npm 包添加,則需要
var contract = require("truffle-contract");
在 javascript 之上添加。在這種情況下,您需要browserify
在瀏覽器中執行之前。
只需執行
npm i @truffle/contract
這將安裝正確的包。松露契約現在重命名為@truffle/contract。檢查 npm 文件